Jump to content

Creating a button to fire a selection from a combo box


Recommended Posts

Hi guys hope you are well.

I have the following code, which I would like to add to.

What I would like to do is explained in the attached snippet, but briefly, I would like to add a button to the form, which when clicked, would fire off whatever is selected in the combo box.

Any help greatly appreciated.

#include <Array.au3>
#include <File.au3>
#include <GUIComboBox.au3>
#include <GUIConstantsEx.au3>

_Main()


Func _Main()
    Local $hCombo, $iCombo

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;Output the exe list to a text file. Skip the echo is on line, by using skip=1.
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    $listpath = @ScriptDir & '\apps\*.exe'
    RunWait(@ComSpec & ' /c for /f "tokens=* delims=\ skip=1" %a in (''dir /S /B ' & $listpath & ' /A-D'') do @echo %a >> grplist.txt','',@SW_HIDE)

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;Create a form.
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        GUICreate('Executables', 500, 300)

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;Create a combo to hold the data.
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        ;$iCombo = GUICtrlCreateCombo("Select A Folder", 30, 75, 220, 200)
        ;Don't put a title in as this will create an entry in the combo box.
        ;$iCombo = GUICtrlCreateCombo("Select A Folder", 30, 75, 220, 200)
        $iCombo = GUICtrlCreateCombo("", 30, 75, 220, 200)
        $hCombo = GUICtrlGetHandle(-1)



    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;Open the file in order to read it.
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        $FileOpen = FileOpen('grplist.txt', 0)

        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        ;Add error-handling for file.
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

            If $FileOpen = -1 Then
                MsgBox(0, "Error", "Unable to open file.")
                Exit
            EndIf


    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;Set the data of the combo by looping through the file.
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        While 1
            $line = FileReadLine($FileOpen)
            If $line = "" Then ExitLoop
            If @error = -1 Then ExitLoop
            GUICtrlSetData($iCombo,$line)
        Wend
;_FileReadToArray

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;Set the default visible entry in the combobox with this function.
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    _GUICtrlComboBox_SetEditText($hCombo, "Select A Folder")

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;Close the file to free resources.
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        FileClose($FileOpen)

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;Show the form since forms are hidden by default.
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        GUISetState(@SW_SHOW)

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;Keep the form open until you close it.
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        Do
        Until GUIGetMsg() = $GUI_EVENT_CLOSE

EndFunc   ;==>_Main

post-65297-0-29217100-1308268736_thumb.j

Link to comment
Share on other sites

GUICtrlRead() - Have a look at the Help File under the Example GUICtrlCreateCombo().

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Link to comment
Share on other sites

In your While statement on the button press, include something like this (modify it to fit your variables because you didn't provide enough code to list them all):

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    Case $Button
        $programLocation = GUICtrlRead($iCombo)
        Run ($programLocation)
    EndSwitch
WEnd

#include <ByteMe.au3>

Link to comment
Share on other sites

Hi guys, I have tried to use your logic sleepy and guiness.

Thank you so much guys. The code working is below.

#include <Array.au3>
#include <File.au3>
#include <GUIComboBox.au3>
#include <GUIConstantsEx.au3>

_Main()


Func _Main()
    Local $hCombo, $iCombo

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;Output the exe list to a text file. Skip the echo is on line, by using skip=1.
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    $listpath = @ScriptDir & '\apps\*.exe'
    RunWait(@ComSpec & ' /c for /f "tokens=* delims=\ skip=1" %a in (''dir /S /B ' & $listpath & ' /A-D'') do @echo %a >> grplist.txt','',@SW_HIDE)

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;Create a form.
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        GUICreate('Executables', 500, 300)

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;Create a combo to hold the data.
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        ;$iCombo = GUICtrlCreateCombo("Select A Folder", 30, 75, 220, 200)
        ;Don't put a title in as this will create an entry in the combo box.
        ;$iCombo = GUICtrlCreateCombo("Select A Folder", 30, 75, 220, 200)
        $iCombo = GUICtrlCreateCombo("", 30, 75, 220, 200)
        $hCombo = GUICtrlGetHandle(-1)


    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;Create a button to press.
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        $Button1 = GUICtrlCreateButton("Run ", 10, 30, 100)

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;Open the file in order to read it.
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        $FileOpen = FileOpen('grplist.txt', 0)

        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        ;Add error-handling for file.
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

            If $FileOpen = -1 Then
                MsgBox(0, "Error", "Unable to open file.")
                Exit
            EndIf


    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;Set the data of the combo by looping through the file.
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        While 1
            $line = FileReadLine($FileOpen)
            If $line = "" Then ExitLoop
            If @error = -1 Then ExitLoop
            GUICtrlSetData($iCombo,$line)
        Wend
;_FileReadToArray

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;Set the default visible entry in the combobox with this function.
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    _GUICtrlComboBox_SetEditText($hCombo, "Select A Folder")

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;Close the file to free resources.
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        FileClose($FileOpen)

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;Show the form since forms are hidden by default.
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        GUISetState(@SW_SHOW)

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;Keep the form open until you close it.
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        ;Do
        ;Until GUIGetMsg() = $GUI_EVENT_CLOSE



        While 1
            $nMsg = GUIGetMsg()
            Switch $nMsg
                Case $GUI_EVENT_CLOSE
                    Exit
            Case $Button1
                $programLocation = GUICtrlRead($iCombo)
                MsgBox(0, "Error", $programLocation)
                ;Run ("Notepad")
                Run ($programLocation)
            EndSwitch
        WEnd




EndFunc   ;==>_Main
Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...