Jump to content
Sign in to follow this  
NeverDUN

Help with GUI script needed.

Recommended Posts

Ok so thus far the script does what it's suppose to do.. to a point. 

There are two complications and they are as follows:

  • There is suppose to be ONE GUI that opens up.

When i run the script it opens, but when i close it another identical one opens behind it.

  • When i click save on the first GUI it saves like it's supposed too.

BUT when i close it and reopen it, it's suppose to open with the info that was saved.

I'm no pro coder, maybe it's something very small i'm not getting.

Some help would be highly appreciated.

Yea.. i have it saving alot :3

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <MsgBoxConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <ProgressConstants.au3>
#include <WindowsConstants.au3>


Do
    $pass = InputBox("Enter Password", "Please enter the password", "", "*", 150, 120)
    If $pass <> "Password" Then
    EndIf
    If (@error == 1) Then Exit ;
Until $pass == "123"
MsgBox(0, "Success", "Correct password" & @CRLF & "")

Global $sConfigPath = @ScriptDir & "\Settings.ini"

ProgressOn("Title", "Loading program", "Loading...")

For $i = 0 To 100
    ProgressSet($i)
    Sleep(5)
Next

ProgressSet(50, "Half Way.")
Sleep(250)

ProgressSet(100, "Done!")
Sleep(750)
ProgressOff()

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Title", 610, 477, 206, 143)
$Input1 = GUICtrlCreateInput("Date", 480, 16, 113, 21)
$Input2 = GUICtrlCreateInput("Title", 16, 56, 577, 21)
$Edit1 = GUICtrlCreateEdit("", 16, 80, 577, 329)
$Button1 = GUICtrlCreateButton("Save", 520, 424, 75, 25, $BS_DEFPUSHBUTTON)
$idProgressbar1 = GUICtrlCreateProgress(16, 424, 454, 17)
$StatusBar1 = _GUICtrlStatusBar_Create($Form1)
GUICtrlSetColor(-1, 32250)
GUISetState(@SW_SHOW)

Local $iWait = 20; wait 20ms for next progressstep
Local $iSavPos = 0; progressbar-saveposition

Local $idMsg, $idM
; Loop until the user exits.
Do
    $idMsg = GUIGetMsg()
    If $idMsg = $Button1 Then
        GUICtrlSetData($Button1, "Stop")
        For $i = $iSavPos To 100
            If GUICtrlRead($idProgressbar1) = 50 Then MsgBox($MB_SYSTEMMODAL, "Info", "half is done...", 1)
            $idM = GUIGetMsg()

            If $idM = -3 Then ExitLoop

            If $idM = $Button1 Then
                GUICtrlSetData($Button1, "Next")
                $iSavPos = $i;save the current bar-position to $iSavPos
                ExitLoop
            Else
                $iSavPos = 0
                GUICtrlSetData($idProgressbar1, $i)
                Sleep($iWait)
            EndIf
        Next
        If $i > 100 Then
            ;       $iSavPos=0
            GUICtrlSetData($Button1, "Click")
        EndIf

        If GUICtrlSetData($Button1, "Click") Then
            IniWrite($sConfigPath, "Date", "Input1", GUICtrlRead($Input1))
            IniWrite($sConfigPath, "Title", "Input2", GUICtrlRead($Input2))
            IniWrite($sConfigPath, "Edit", "Edit1", GUICtrlRead($Edit1))
        EndIf

        If IniWrite($sConfigPath, "Edit", "Edit1", GUICtrlRead($Edit1)) Then
            GUICtrlSetData($Button1, "Done")
        EndIf
    EndIf
Until $idMsg = $GUI_EVENT_CLOSE



GUICtrlSetData($Input1, IniRead($sConfigPath, "Date", "Input1", "Date"))
GUICtrlSetData($Input2, IniRead($sConfigPath, "Title", "Input2", "Title"))
GUICtrlSetData($Edit1, IniRead($sConfigPath, "Edit", "Edit1", "Start writing..."))



While 1
    $idMsg = GUIGetMsg()

    Switch $idMsg
        Case $GUI_EVENT_CLOSE
            ; Note: Exit needs to be changed to ExitLoop
            ; for any code after the loop to execute.
            ExitLoop
    EndSwitch

    If $idMsg = $GUI_EVENT_CLOSE Then ExitLoop
    If $idMsg = $Button1 Then SendMyData()
WEnd

Func Button1Click()
    IniWrite($sConfigPath, "Date", "Input1", GUICtrlRead($Input1))
    IniWrite($sConfigPath, "Title", "Input2", GUICtrlRead($Input2))
    IniWrite($sConfigPath, "Edit", "Edit1", GUICtrlRead($Edit1))
EndFunc   ;==>Button1Click

IniWrite($sConfigPath, "Date", "Input1", GUICtrlRead($Input1))
IniWrite($sConfigPath, "Title", "Input2", GUICtrlRead($Input2))
IniWrite($sConfigPath, "Edit", "Edit1", GUICtrlRead($Edit1))

Func SendMyData()
    FileDelete('Settings.ini')
    $data = "[General]" & @CRLF & GUICtrlRead($Input2) & @CRLF & @CRLF & GUICtrlRead($Edit1)
    FileWrite('\Settings.ini', $data)
    MsgBox(0, 'Info', 'Data saved')
EndFunc   ;==>SendMyData
#EndRegion ### END Koda GUI section ###
Edited by NeverDUN

Share this post


Link to post
Share on other sites

Your program is so simple, progress bars are not necessary. The Do/Until loop is overly complicated. Also, near the end of the program, I see you were deleting the INI file and using FileWrite to write to it. That is very inefficient. I'm posting some simple code that does what you need. Perhaps it can help you see a better way:

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <MsgBoxConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <ProgressConstants.au3>
#include <WindowsConstants.au3>

Do
    $pass = InputBox("Enter Password", "Please enter the password", "", "*", 150, 120)
    If $pass <> "Password" Then
    EndIf
    If (@error == 1) Then Exit ;
Until $pass == "123"
MsgBox(0, "Success", "Correct password" & @CRLF & "")

Global $sConfigPath = @ScriptDir & "\Settings.ini"

$Form1 = GUICreate("Title", 610, 477, 206, 143)
$Input1 = GUICtrlCreateInput("Date", 480, 16, 113, 21)
$Input2 = GUICtrlCreateInput("Title", 16, 56, 577, 21)
$Edit1 = GUICtrlCreateEdit("", 16, 80, 577, 329)
$Button1 = GUICtrlCreateButton("Save", 520, 424, 75, 25, $BS_DEFPUSHBUTTON)
$StatusBar1 = _GUICtrlStatusBar_Create($Form1)
GUICtrlSetColor(-1, 32250)
GUISetState(@SW_SHOW)

$dateRead = IniRead($sConfigPath, "Date", "Input1", "")
$titleRead = IniRead($sConfigPath, "Title", "Input2", "")
$editRead = IniRead($sConfigPath, "Edit", "Edit1", "")
GUICtrlSetData($Input1, $dateRead)
GUICtrlSetData($Input2, $titleRead)
GUICtrlSetData($Edit1, $editRead)

While 1
    $idMsg = GUIGetMsg()
    Switch $idMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            If GUICtrlRead($Button1) = "Save" Then
                IniWrite($sConfigPath, "Date", "Input1", GUICtrlRead($Input1))
                IniWrite($sConfigPath, "Title", "Input2", GUICtrlRead($Input2))
                IniWrite($sConfigPath, "Edit", "Edit1", GUICtrlRead($Edit1))
                GUICtrlSetData($Button1, "Done")
            ElseIf GUICtrlRead($Button1) = "Done" Then
                Exit
            EndIf
    EndSwitch
WEnd
Edited by abberration

RAID Calculator | Software Installer

The truth has been suppressed since the dawn of time.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By coronatuss
      Hello eveyone,
      I installed the latest version of Autoit (x86 - for greater compatibility) and SciTE.
      Every time I want to generate the GUI code designed in Koda, the program freezes (only Koda, not SciTE).
      Have you ever had this problem? Do you know how to fix it?
      Thanks!
    • By nacerbaaziz
      good morning sirs.
      please i have a request from you.
      i have an variable to Read a data from a file
      this data is Encrypted
      and when i read it i Decrypte it.
      for that i need a function to Write a ini data to string.
      ;#Function# ===================================================================================================================== ; Name............: _IniReadFromString ; Description.....: Returns the value of a key in a specific section of an ini-formatted string ; Syntax..........: _IniReadFromString($szInput, $szSection, $szKey, $Default) ; Parameters......: ;   $szInput - The string that contains data in ini format ;   $szSection   - The sectionname (just as in IniRead) ;   $szKey   - The keyname (just as in IniRead) ;   $Default - The default value if the key does not exist or reading failed (just as in IniRead) ; Return values ..: ;   Success  - Returns the read value ;   Failure  - Returns $Default ; Author .........: FichteFoll ; Remarks ........: Works for Unicode as well as for ANSI ; Related ........: IniRead, _IniReadSectionFromString ; Link ...........; See on top ; Example ........; $var = _IniReadFromString(StringFormat("[Sect]\r\nMyKey1=value1\r\nMyKey2=value2"), "Sect", "MyKey2", "no_value") ; =============================================================================================================================== Func _IniReadFromString($szInput, $szSection, $szKey, $Default) $szInput = StringStripCR($szInput) ;~  Local $aRegMl = StringRegExp($szInput, "\[" & __StringEscapeRegExp($szSection) & "\]\n+(?:[^\[].*?=.*\n)*" & __StringEscapeRegExp($szKey) & "=(.*)\n?(",3) Local $aRegMl = StringRegExp($szInput, "\[" & __StringEscapeRegExp($szSection) & "\]\n+(?:[^\[].*?=.*\n)*" & __StringEscapeRegExp($szKey) & "=(.*)\n?", 3) If @error Then Return SetError(1, 0, $Default) ; key not found    Return $aRegMl[0] EndFunc;==>_IniReadFromString ; ############################################################################################################################### ; =============================================== ; = Internal Use Only ; =============================================== Func __StringEscapeRegExp($szExp) Return StringRegExpReplace($szExp, "([\(\)\[\]\{\}\\\/\?\.\\|\+])", "\\$1") ; ()[]{}\/?.|+ EndFunc;==>__StringEscapeRegExp like this  function Read the ini from string.
       
       
      please ihelp me
      thanks in advance
    • By dinotom
      Can files be read from the web or the cloud?
      I am trying to read this file but get the file open error.
      #include <FileConstants.au3> #include <MsgBoxConstants.au3> ;Assign the file path to a variable Local $sFilePath = "C:\Automation\test.txt" Local $sFilePathAzure ="https://batlgroupimages.blob.core.windows.net/files/test.txt" Local $nLineNumberToLookFor = 0 ;Open the file test.txt in append mode. ;If the folder C:\Automation does not exist, it will be created. Local $hFileOpen = FileOpen($sFilePathAzure, $FO_APPEND + $FO_CREATEPATH) ;Display a message box in case of any errors. If $hFileOpen = -1 Then MsgBox($MB_SYSTEMMODAL, "", "An error occurred while opening the file.") EndIf ;Set the file position to beginning for reading the data from the beginning of the file. FileSetPos($hFileOpen, 0, $FILE_BEGIN) ;Read the data from the file using the handle returned by FileOpen ;Local $sFileRead = FileRead($hFileOpen) ;Read the 2nd line of data from the file using the handle returned by FileOpen Local $sFileReadLine = FileReadLine ($hFileOpen,2) ;Close the handle returned by FileOpen. FileClose($hFileOpen)  
    • By nacerbaaziz
      hello sirs, i've created a tool to the blind users, this tool helps the blind to listen to a audio effect when moving between the GUIs controls on they computers
      where this tool can get the class for the current focus control and play a sound from a folder
      i've added all the knowne classes, but i found some problems i hope any one can help me.
      this is the code that i created

      #include <WinAPISys.au3> Global $h_CurrentHWNDFocus = "", $h_CurrentControlHWNDFocus = "" AdlibRegister("WindowAudioFocus", 50) Func WindowAudioFocus()     Local $h_NewHWNDFocus = WinGetHandle("[active]", "")     Local $h_NewControlHWNDFocus = ControlGetFocus($h_NewHWNDFocus, "")     If ($h_NewHWNDFocus = $h_CurrentHWNDFocus) And ($h_NewControlHWNDFocus = $h_CurrentControlHWNDFocus) Then Return 0     AdlibUnRegister("WindowAudioFocus")     If Not ($h_NewHWNDFocus = $h_CurrentHWNDFocus) Then         SoundPlay(@ScriptDir & "\focus_Audio\WindowChanged.wav")     Else         Switch _WinAPI_GetClassName(ControlGetHandle($h_NewHWNDFocus, "", $h_NewControlHWNDFocus))             Case "Button", "Start", "TrayButton", "TrayShowDesktopButtonWClass", "sbutton", "CirrussButton", "ODbcButton", "ThunderRTCommandButton", "ThunderSSOption", "ThunderSSCommand", "ThunderCommandButton", "ThunderRT6CommandButton", "ThunderRT5CommandButton", "TButton", "TBitBtn", "TAdvGlowButton", "ButtonWndClass", "afx:0:376:baa946", "_AOL_Button"                 If _IsCheckBox(ControlGetHandle($h_NewHWNDFocus, "", $h_NewControlHWNDFocus)) Then                     SoundPlay(@ScriptDir & "\focus_Audio\checkBox.wav")                 ElseIf _IsRadio(ControlGetHandle($h_NewHWNDFocus, "", $h_NewControlHWNDFocus)) Then                     SoundPlay(@ScriptDir & "\focus_Audio\radio.wav")                 Else                     SoundPlay(@ScriptDir & "\focus_Audio\button.wav")                 EndIf             Case "ComboBox", "ComboBoxEx32", "MSOBALLOONREComboBox20W", "REComboBox20W", "ThunderComboBox", "ThunderDriveListBox", "ThunderRT6ComboBox", "TORComboEdit", "TCombobox", "TComboBoxEx", "TORComboBox", "TColorBox", "TNFComboBox", "Internet Explorer_TridentCmbobx", "ComboWndClass", "_AOL_ComboBox", "ThunderRT5ComboBox", "ComboLBox"                 SoundPlay(@ScriptDir & "\focus_Audio\list.wav")             Case "Edit", "SearchBox", "TChatRichEdit", "_WwN", "_WwO", "RichEdit20A", "RichEdit20WPT", "RICHEDIT60W", "OKttbx", "RichEditA", "ThunderTextBox", "ThunderRT6TextBox", "ThunderRT5TextBox", "TEdit", "TRichEdit", "TRichEditViewer", "TMemo", "TInplaceEditList", "TLabeledEdit", "TMaskEdit", "TDateTimePicker", "TRichEdit", "TCaptionMemo", "TAddictRichEdit", "TCaptionEdit", "RichTextWndClass", "TextWndClass", "PasswordWndClass", "TextAreaWndClass", "MSWorksDoc", "_AOL_Edit", "SysDateTimePick32"                 SoundPlay(@ScriptDir & "\focus_Audio\edit.wav")             Case "ListBox", "ComboLBox", "REListBox20W", "SUPERGRID", "OUTEXVLB", "WMSUIVLB", "SchdmapiVLB", "VLBClass", "ThunderDirListBox", "ThunderFileListBox", "ThunderListBox", "ThunderRT6ListBox", "ThunderRT5ListBox", "TListbox", "TValueListEditor", "TORCalendar", "TColorListBox", "TCheckListBox", "Internet Explorer_TridentLstBox", "ListBoxWndClass", "ListWndClass", "hh_kwd_vlist", "afx:8:376:0:946", "_AOL_ListBox", "_AOL_Tree", ""                 SoundPlay(@ScriptDir & "\focus_Audio\List.wav")             Case "SysListView32", "OpenListView", "wuDuiListView", "ListView20WndClass", "TcxGridSite", "TListView", "TSystemListView", "ListViewWndClass", ""                 SoundPlay(@ScriptDir & "\focus_Audio\ListView.wav")             Case "SysTreeView32", "SearchTreeList", "FeatureTree", "TreeView20WndClass", "TSystemTreeView", "TTreeView", ""                 SoundPlay(@ScriptDir & "\focus_Audio\TreeView.wav")             Case Else                 SoundPlay(@ScriptDir & "\focus_Audio\focus.wav")         EndSwitch     EndIf     $h_CurrentHWNDFocus = $h_NewHWNDFocus     $h_CurrentControlHWNDFocus = $h_NewControlHWNDFocus     AdlibRegister("WindowAudioFocus", 50)     Return 1 EndFunc   ;==>WindowAudioFocus Func _IsCheckBox($ctrl_hwnd)     $Style = _WinAPI_GetWindowLong($ctrl_hwnd, $GWL_STYLE)     Return BitAND($Style, $BS_CHECKBOX) = $BS_CHECKBOX EndFunc   ;==>_IsCheckBox Func _IsRadio($ctrl_hwnd)     $Style = _WinAPI_GetWindowLong($ctrl_hwnd, $GWL_STYLE)     Return BitAND($Style, $BS_AUTORADIOBUTTON) = $BS_AUTORADIOBUTTON EndFunc   ;==>_IsRadio
      what i need from you is :
      play a sound when a menu item focus, that sound named menu.wav
      play a sound named items.wav when the users move on list box items or list view or treeview items or a combobox items
      please if can any one help me i'll very happy
      thanks on advance
    • By nacerbaaziz
      hello sirs, please i created a tool witch get the focused control in a window and play a audio file linked with this controls
      e.g buttons, checkBoxes, radios, comboboxes, and others
      i know that their is a function that give us the control focus but it return the classNN
      i want to get the class name to use it with a switch and
      because their are more than class e.g button tbutton timagebutton tnewButton...
      please can any one help me to get the class name not the classnn
      thanks in advance
×
×
  • Create New...