Jump to content

Recommended Posts

Posted

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

Posted

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

Posted

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>

Posted

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

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
  • Recently Browsing   0 members

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