Jump to content
Wicked_Caty

GUI behaves strangely

Recommended Posts

A function is started and creates a GUI with two buttons. If either of those are pressed, the function will return a value, which will be used to start another function. However, only one of those two buttons works.

Local $gui = GUICreate("Crypt", 120, 130)
   Local $button0 = GUICtrlCreateButton("Encrypt", 10, 10, 100, 50)
   Local $button1 = GUICtrlCreateButton("Decrypt", 10, 70, 100, 50)
   GUISetState(@SW_SHOW, $gui)

   While 1

      If GUIGetMsg() = $button0 Then
         GUISetState(@SW_HIDE, $gui)
         GUIDelete($gui)
         Return 1
      ElseIf GUIGetMsg() = $button1 Then
         GUISetState(@SW_HIDE, $gui)
         GUIDelete($gui)
         Return 2
      ElseIf GUIGetMsg() = $GUI_EVENT_CLOSE Then
         GUISetState(@SW_HIDE, $gui)
         GUIDelete($gui)
         Return 0
      EndIf

   WEnd

The If works as expected, but the two ElseIf don't work at all. No matter how hard or how often I hit that $button1 or click that X in the top-right of the GUI.

Maybe I haven't had enough coffee today, who knows, but I'm stuck right now...

Thanks - complete source-code is attached

_Crypt.au3

Edited by Wicked_Caty
Grammar, spelling, formatting

Share this post


Link to post
Share on other sites

I'd suggest organizing your code a bit better and probably not jumping multiple functions that are pretty related (Creating a gui for login then trapping the execution in the login function, then a gui for mode and trapping your execution for mode). Anyways, the solution is to store the GUIGetMsg() in a variable or use it as the expression in a switch statement.

 

Edited by InunoTaishou

Share this post


Link to post
Share on other sites

In other words, you are calling GUIGetMsg() too many times in you While.. loop, and your program would be eating up too much memory, and most likely giving you a timing issue. Inserting a Sleep(50) every loop might help too.

Like Inuno said, use a variable, etc.

While 1
    $msg = GUIGetMsg()
      If $msg = $button0 Then
         GUISetState(@SW_HIDE, $gui)
         GUIDelete($gui)
         Return 1
      ElseIf $msg = $button1 Then
         GUISetState(@SW_HIDE, $gui)
         GUIDelete($gui)
         Return 2
      ElseIf $msg = $GUI_EVENT_CLOSE Then
         GUISetState(@SW_HIDE, $gui)
         GUIDelete($gui)
         Return 0
      EndIf
    ;Sleep(50)
   WEnd

Like he also said though, you would be better off using the traditional Switch method.

Haven't looked at the rest of your code or tried my improvement, but that misuse of memory stood out.


Make sure brain is in gear before opening mouth!
Remember, what is not said, can be just as important as what is said.

Spoiler

What is the Secret Key? Life is like a Donut

If I put effort into communication, I expect you to read properly & fully, or just not comment.
Ignoring those who try to divert conversation with irrelevancies.
If I'm intent on insulting you or being rude, I will be obvious, not ambiguous about it.
I'm only big and bad, to those who have an over-active imagination.

I may have the Artistic Liesense ;) to disagree with you. TheSaint's Toolbox (be advised many downloads are not working due to ISP screwup with my storage)

userbar.png

Share this post


Link to post
Share on other sites
Quote

I'd suggest organizing your code a bit better and probably not jumping multiple functions that are pretty related (Creating a gui for login then trapping the execution in the login function, then a gui for mode and trapping your execution for mode). Anyways, the solution is to store the GUIGetMsg() in a variable or use it as the expression in a switch statement.

How am I supposed to do that? I don't know the "guildelines" or the "rulebook" :/

Share this post


Link to post
Share on other sites

There's no rule book for it, it's just a suggestion. You could do something like this (I didn't do all of it, just the login and crypt gui)

#include <MsgBoxConstants.au3>
#include <GUIConstants.au3>
#include <FileConstants.au3>
#include <StringConstants.au3>
#include <Array.au3>

Global $frmLogin = 1
Global $inpUsername
Global $inpPassword
Global $btnLogin
Global $btnExit
Global $frmCrypt = 1
Global $btnEncrypt
Global $btnDecrypt
Global Const $user = "Caty"
Global Const $pass = 1234

Main()

Func CreateLoginGUI()
    $frmLogin = GUICreate("Crypt", 220, 110)
    $inpUsername = GUICtrlCreateInput("Username:", 10, 10, 200, 20)
    $inpPassword = GUICtrlCreateInput("Password:", 10, 40, 200, 20)
    $btnLogin = GUICtrlCreateButton("Log in", 10, 70, 95, 30)
    $btnExit = GUICtrlCreateButton("Exit", 115, 70, 95, 30)
    GUISetState(@SW_SHOW, $frmLogin)
EndFunc   ;==>Login

Func CreateCryptGUI()
    $frmCrypt = GUICreate("Crypt", 120, 130)
    $btnEncrypt = GUICtrlCreateButton("Encrypt", 10, 10, 100, 50)
    $btnDecrypt = GUICtrlCreateButton("Decrypt", 10, 70, 100, 50)
    GUISetState(@SW_SHOW, $frmCrypt)
EndFunc   ;==>Mode

Func Encryption()

    Local $gui = GUICreate("Crypt", 200, 140)
    Local $ctrl0 = GUICtrlCreateInput("Filename", 10, 10, 180, 30)
    Local $ctrl1 = GUICtrlCreateInput("Text", 10, 50, 180, 30)
    Local $button = GUICtrlCreateButton("Encrypt", 10, 90, 180, 40)
    GUISetBkColor(0xFF8811, $gui)
    GUISetState(@SW_SHOW, $gui)

    While 1

        If GUIGetMsg() = $button Then
            ExitLoop
        Else
            Sleep(25)
        EndIf

    WEnd

    Local $f = FileOpen("D:\documents\coding\Crypt\" & GUICtrlRead($ctrl0), $FO_APPEND)
    Local $text = StringSplit(GUICtrlRead($ctrl1), '', 2)

    Local $len = UBound($text)
    Local $tmp = ""

    FileWrite($f, $len & @CRLF)

    For $i = 0 To $len - 1

        $tmp = ""
        $tmp = AscW($text[$i])
        $tmp = $tmp * 29212
        $tmp = $tmp / 18108
        $tmp = $tmp * 14481
        $tmp = $tmp / 10857
        $tmp = $tmp * 31627
        $tmp = $tmp / 24087
        $tmp = $tmp * 15835
        $tmp = $tmp / 25878
        $tmp = $tmp * 11957
        $tmp = $tmp / 27520
        $tmp = $tmp * 01324

        FileWrite($f, $tmp & @CRLF)

    Next

    GUISetBkColor(0x11FF88, $gui)

    FileClose($f)
    GUISetState(@SW_HIDE, $gui)
    GUIDelete($gui)
    Return True

EndFunc   ;==>Encryption

Func Decryption()

    Local $gui = GUICreate("Crypt", 200, 140)
    Local $ctrl0 = GUICtrlCreateInput("Encrypted", 10, 10, 180, 30)
    Local $ctrl1 = GUICtrlCreateInput("Decrypted", 10, 50, 180, 30)
    Local $button = GUICtrlCreateButton("Decrypt", 10, 90, 180, 40)
    GUISetBkColor(0xFF8811, $gui)
    GUISetState(@SW_SHOW, $gui)

    While 1

        If GUIGetMsg() = $button Then
            ExitLoop
        Else
            Sleep(25)
        EndIf

    WEnd

    Local $fin = FileOpen("D:\documents\coding\Crypt\" & GUICtrlRead($ctrl0), $FO_APPEND)
    Local $len = Number(FileReadLine($fin, 1))
    Local $tmp0, $tmp1, $tmp2

    For $i = 0 To $len - 1

        $tmp0 = ""
        $tmp1 = ""
        $tmp0 = Dec(Number(FileReadLine($fin, $i + 1)))
        $tmp0 = $tmp0 / 01324
        $tmp0 = $tmp0 * 27520
        $tmp0 = $tmp0 / 11957
        $tmp0 = $tmp0 * 25878
        $tmp0 = $tmp0 / 15835
        $tmp0 = $tmp0 * 24087
        $tmp0 = $tmp0 / 31627
        $tmp0 = $tmp0 * 10857
        $tmp0 = $tmp0 / 14481
        $tmp0 = $tmp0 * 18108
        $tmp0 = $tmp0 / 29212
        $tmp0 = ChrW($tmp0)
        $tmp1 = String($tmp1) + String($tmp0)

    Next

    GUISetBkColor(0x11FF88, $gui)

    FileClose($fin)
    Local $fou = FileOpen("D:\documents\coding\Crypt\" & GUICtrlRead($ctrl1), $FO_APPEND)
    FileWrite($fou, $tmp2)
    FileClose($fou)
    GUISetState(@SW_HIDE, $gui)
    GUIDelete($gui)
    Return True

EndFunc   ;==>Decryption

Func Main()
    Local $att = 3
    CreateLoginGUI()

    While (True)
        Local $nMsg = GUIGetMsg(1)
        Switch ($nMsg[1])
            Case $frmLogin
                Switch ($nMsg[0])
                    Case $GUI_EVENT_CLOSE, $btnExit
                        GUIDelete($frmLogin)
                        Exit 0
                    Case $btnLogin
                        If GUICtrlRead($inpUsername) = $user And GUICtrlRead($inpPassword) = $pass Then
                            GUIDelete($frmLogin)
                            CreateCryptGUI()
                        Else
                            If $att = 3 Then
                                GUISetBkColor(0xFF9911, $frmLogin)
                            ElseIf $att = 2 Then
                                GUISetBkColor(0xFF6611, $frmLogin)
                            ElseIf $att = 1 Then
                                GUISetBkColor(0xFF3311, $frmLogin)
                            Else
                                GUIDelete($frmLogin)
                                Exit -1
                            EndIf
                            $att -= 1
                        EndIf
                EndSwitch
            Case $frmCrypt
                Switch ($nMsg[0])
                    case $GUI_EVENT_CLOSE
                        GUIDelete($frmCrypt)
                        Return 0
                    Case $btnEncrypt
                        Encryption()
                    Case $btnDecrypt
                        Decryption()
                EndSwitch
        EndSwitch
    WEnd
EndFunc   ;==>Main

Call a function that creates the corresponding GUI but the execution stays in Main() and using the advanced mode in GUIGetMsg, since we'll be working with multiple GUIs.

If it's too complicated then GUIOnEventMode might be easier.

#include <MsgBoxConstants.au3>
#include <GUIConstants.au3>
#include <FileConstants.au3>
#include <StringConstants.au3>
#include <Array.au3>

Opt("GUIOnEventMode", 1)

Global $frmLogin
Global $inpUsername
Global $inpPassword
Global $btnLogin
Global $btnExit
Global $frmCrypt
Global $btnEncrypt
Global $btnDecrypt
Global Const $user = "Caty"
Global Const $pass = 1234


CreateLoginGUI()

While (True)
    Sleep(100)
WEnd

Func Close()
    If ($frmLogin) Then GUIDelete($frmLogin)
    If ($frmCrypt) Then GUIDelete($frmCrypt)
    Exit 0
EndFunc   ;==>Close

Func btnLogin()
    Local Static $att = 3
    If (GUICtrlRead($inpUsername) = $user And GUICtrlRead($inpPassword) = $pass) Then
        GUIDelete($frmLogin)
        CreateCryptGUI()
    Else
        If $att = 3 Then
            GUISetBkColor(0xFF9911, $frmLogin)
        ElseIf $att = 2 Then
            GUISetBkColor(0xFF6611, $frmLogin)
        ElseIf $att = 1 Then
            GUISetBkColor(0xFF3311, $frmLogin)
        Else
            GUIDelete($frmLogin)
            Exit -1
        EndIf
        $att -= 1
    EndIf
EndFunc   ;==>btnLogin

Func CreateLoginGUI()
    $frmLogin = GUICreate("Crypt", 220, 110)
    $inpUsername = GUICtrlCreateInput("Username:", 10, 10, 200, 20)
    $inpPassword = GUICtrlCreateInput("Password:", 10, 40, 200, 20)
    $btnLogin = GUICtrlCreateButton("Log in", 10, 70, 95, 30)
    $btnExit = GUICtrlCreateButton("Exit", 115, 70, 95, 30)

    GUICtrlSetOnEvent($btnLogin, "btnLogin")
    GUICtrlSetOnEvent($btnExit, "Close")
    GUISetOnEvent($GUI_EVENT_CLOSE, "Close")
    GUISetState(@SW_SHOW, $frmLogin)
EndFunc   ;==>CreateLoginGUI

Func CreateCryptGUI()
    $frmCrypt = GUICreate("Crypt", 120, 130)
    $btnEncrypt = GUICtrlCreateButton("Encryption", 10, 10, 100, 50)
    $btnDecrypt = GUICtrlCreateButton("Decryption", 10, 70, 100, 50)

    GUICtrlSetOnEvent($btnEncrypt, "Encryption")
    GUICtrlSetOnEvent($btnDecrypt, "Decryption")
    GUISetOnEvent($GUI_EVENT_CLOSE, "Close")
    GUISetState(@SW_SHOW, $frmCrypt)
EndFunc   ;==>CreateCryptGUI

Func Encryption()

    Local $gui = GUICreate("Crypt", 200, 140)
    Local $ctrl0 = GUICtrlCreateInput("Filename", 10, 10, 180, 30)
    Local $ctrl1 = GUICtrlCreateInput("Text", 10, 50, 180, 30)
    Local $button = GUICtrlCreateButton("Encrypt", 10, 90, 180, 40)
    GUISetBkColor(0xFF8811, $gui)
    GUISetState(@SW_SHOW, $gui)

    While 1

        If GUIGetMsg() = $button Then
            ExitLoop
        Else
            Sleep(25)
        EndIf

    WEnd

    Local $f = FileOpen("D:\documents\coding\Crypt\" & GUICtrlRead($ctrl0), $FO_APPEND)
    Local $text = StringSplit(GUICtrlRead($ctrl1), '', 2)

    Local $len = UBound($text)
    Local $tmp = ""

    FileWrite($f, $len & @CRLF)

    For $i = 0 To $len - 1

        $tmp = ""
        $tmp = AscW($text[$i])
        $tmp = $tmp * 29212
        $tmp = $tmp / 18108
        $tmp = $tmp * 14481
        $tmp = $tmp / 10857
        $tmp = $tmp * 31627
        $tmp = $tmp / 24087
        $tmp = $tmp * 15835
        $tmp = $tmp / 25878
        $tmp = $tmp * 11957
        $tmp = $tmp / 27520
        $tmp = $tmp * 01324

        FileWrite($f, $tmp & @CRLF)

    Next

    GUISetBkColor(0x11FF88, $gui)

    FileClose($f)
    GUISetState(@SW_HIDE, $gui)
    GUIDelete($gui)
    Return True

EndFunc   ;==>Encryption

Func Decryption()

    Local $gui = GUICreate("Crypt", 200, 140)
    Local $ctrl0 = GUICtrlCreateInput("Encrypted", 10, 10, 180, 30)
    Local $ctrl1 = GUICtrlCreateInput("Decrypted", 10, 50, 180, 30)
    Local $button = GUICtrlCreateButton("Decrypt", 10, 90, 180, 40)
    GUISetBkColor(0xFF8811, $gui)
    GUISetState(@SW_SHOW, $gui)

    While 1

        If GUIGetMsg() = $button Then
            ExitLoop
        Else
            Sleep(25)
        EndIf

    WEnd

    Local $fin = FileOpen("D:\documents\coding\Crypt\" & GUICtrlRead($ctrl0), $FO_APPEND)
    Local $len = Number(FileReadLine($fin, 1))
    Local $tmp0, $tmp1, $tmp2

    For $i = 0 To $len - 1

        $tmp0 = ""
        $tmp1 = ""
        $tmp0 = Dec(Number(FileReadLine($fin, $i + 1)))
        $tmp0 = $tmp0 / 01324
        $tmp0 = $tmp0 * 27520
        $tmp0 = $tmp0 / 11957
        $tmp0 = $tmp0 * 25878
        $tmp0 = $tmp0 / 15835
        $tmp0 = $tmp0 * 24087
        $tmp0 = $tmp0 / 31627
        $tmp0 = $tmp0 * 10857
        $tmp0 = $tmp0 / 14481
        $tmp0 = $tmp0 * 18108
        $tmp0 = $tmp0 / 29212
        $tmp0 = ChrW($tmp0)
        $tmp1 = String($tmp1) + String($tmp0)

    Next

    GUISetBkColor(0x11FF88, $gui)

    FileClose($fin)
    Local $fou = FileOpen("D:\documents\coding\Crypt\" & GUICtrlRead($ctrl1), $FO_APPEND)
    FileWrite($fou, $tmp2)
    FileClose($fou)
    GUISetState(@SW_HIDE, $gui)
    GUIDelete($gui)
    Return True

EndFunc   ;==>Decryption

Main() isn't even needed for this one. We're going to create the login GUI then wait until they click one of the buttons, or close. The corresponding functions for the buttons take care of the sequential order of the script, moving on to the next part.

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

  • Similar Content

    • By panlatv
      Hello everybody (and sorry for my bad english)

      I try to get the position of a contextmenu (GUICtrlCreateContextMenu) on a TreeView, with ControlGetPos, but i can't.
      Someone can help me ? Thank you :)

      PS: I need the position to select item wtih rightclick before read the text of the item, because rightclick don't select item (only leftclick).
       
    • 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
      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
    • By CarlD
      Update: Download the latest version here.
      As my first stab at GUI scripting, I'm trying to write a simple graphical interface for Grep for Windows. I have a basic GUI, but I'm stuck on one point and nothing I've tried so far works. The sticking point is that while the Tab key works to move focus from one input control to the next, clicking the mouse on any but the first input does nothing. This seems like a basic feature of GUI functionality that should work out of the box (like Tab), but clearly I'm missing something. I tried (among many other things) Melba23's technique in the post below, but this doesn't do what I'm after -- getting the left click to set the insertion point for user input. Would greatly appreciate a pointer or two. 😉
      Here's my code so far:
      ; Grep for Windows -- GUI [CLD] #include <AutoItConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WinAPI.au3> #include <WindowsConstants.au3> Opt("WinTitleMatchMode", -2) #cs FileInstall("X:\nix\search1.ico", @TempDir & "\search1.ico") FileInstall("X:\nix\grep.exe", @TempDir & "\grep.exe") FileInstall("X:\nix\sed.exe", @TempDir & "\sed.exe") FileInstall("X:\nix\libiconv2.dll", @TempDir & "\libiconv2.dll") FileInstall("X:\nix\libintl3.dll", @TempDir & "\libintl3.dll") FileInstall("X:\nix\pcre3.dll", @TempDir & "\pcre3.dll") FileInstall("X:\nix\regex2.dll", @TempDir & "\regex2.dll") #ce ; $sDefFs = @ScriptDir & "\.txt" $sOut = "" $iX = 20 $iY = 20 $hgGGrep = GUICreate("Grep for Windows: Simple TeXT search", 600, 600) GUISetState(@SW_SHOW, $hgGGrep) ; Obtain value of control: GUICtrlRead() ; left, top, width, height ; $iX, $iY, $iX + n, $iY + m ; $hgIco = GUICtrlCreateIcon(@ScriptDir & "\search1.ico", $iX, $iY, 10) $hgGL0 = GUICtrlCreateLabel("Enter a string or regular expression" & @CRLF & "(space between words means ""OR"")", $iX + 50, $iY, 250, 30) $hgSch = GUICtrlCreateInput("", $iX + 50, $iY + 40, 325, 20, $GUI_SS_DEFAULT_INPUT, -1) $hgXyZ = GUICtrlCreateCheckbox("cAsE-sEnSiTiVe", $iX + 50, $iY + 65, -1, -1) $hgExe = GUICtrlCreateButton("Search", 400, $iY + 40, -1, -1) $hgFL1 = GUICtrlCreateLabel("Filespec", $iX + 50, $iY + 100, 250, 20) $hgFs1 = GUICtrlCreateInput("d:\path\*.txt", $iX + 110, $iY + 100, 250, 20, $GUI_SS_DEFAULT_INPUT, -1) $hgFL2 = GUICtrlCreateLabel("Filespec", $iX + 50, $iY + 120, 250, 20) $hgFs2 = GUICtrlCreateInput("", $iX + 110, $iY + 120, 250, 20, $GUI_SS_DEFAULT_INPUT, -1) $hgFL3 = GUICtrlCreateLabel("Filespec", $iX + 50, $iY + 140, 250, 20) $hgFs3 = GUICtrlCreateInput("", $iX + 110, $iY + 140, 250, 20, $GUI_SS_DEFAULT_INPUT,-1) $hgOut = GUICtrlCreateEdit($sOut, 25, 190, 550, 400, $ES_LEFT, -1) GUICtrlSetState($hgSch, $GUI_FOCUS) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd ; #cs _WinAPI_SetFocus(ControlGetHandle("Grep for Windows", "", $hgSch)) _WinAPI_SetFocus(ControlGetHandle("Grep for Windows", "", $hgFs1)) _WinAPI_SetFocus(ControlGetHandle("Grep for Windows", "", $hgFs2)) _WinAPI_SetFocus(ControlGetHandle("Grep for Windows", "", $hgFs3)) #ce Thanks in advance.
×
×
  • Create New...