Docfxit Posted August 7, 2016 Share Posted August 7, 2016 How can I position the cursor to the first input capable field of a program that I open? Thanks, Docfxit Link to comment Share on other sites More sharing options...
InunoTaishou Posted August 7, 2016 Share Posted August 7, 2016 (edited) _WinAPI_SetFocus will select the control you want #include <WinAPI.au3> #include <GUIConstants.au3> Global $frmMain = GUICreate("", 130, 160) Global $inp1 = GUICtrlCreateInput("", 10, 10, 50, 20) Global $inp2 = GUICtrlCreateInput("", 70, 10, 50, 20) Global $inp3 = GUICtrlCreateInput("", 10, 40, 50, 20) Global $inp4 = GUICtrlCreateInput("", 70, 40, 50, 20) Global $inp5 = GUICtrlCreateInput("", 10, 70, 50, 20) Global $inp6 = GUICtrlCreateInput("", 70, 70, 50, 20) Global $inp7 = GUICtrlCreateInput("", 10, 100, 50, 20) Global $inp8 = GUICtrlCreateInput("", 70, 100, 50, 20) Global $btnFocus = GUICtrlCreateButton("Focus!", 10, 130, 110, 20) GUISetState(@SW_SHOW, $frmMain) While (True) Switch (GUIGetMsg()) Case $GUI_EVENT_CLOSE Exit 0 Case $btnFocus _WinAPI_SetFocus(GUICtrlGetHandle(Eval("inp" & Random(1, 8, 1)))) EndSwitch WEnd Edited August 7, 2016 by InunoTaishou Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted August 8, 2016 Moderators Share Posted August 8, 2016 Docfxit, If you are speaking of an AutoIt script you have coded then it is a little bit simpler than that: #include <GUIConstantsEx.au3> Global $aInput[8] $hGUI = GUICreate("Test", 500, 500) For $i = 0 To 7 $aInput[$i] = GUICtrlCreateInput("", 10, ($i * 30) + 10, 200, 20) Next $cFocus = GUICtrlCreateButton("Focus!", 10, 400, 80, 30) GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit Case $cFocus GUICtrlSetState($aInput[Random(0, 7, 1)], $GUI_FOCUS) EndSwitch WEnd But if, as I suspect, you are asking about third-party apps, then what apps are you trying to automate? Do they not preselect the first available field automatically? M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
Docfxit Posted August 10, 2016 Author Share Posted August 10, 2016 The first input capable field that I need the cursor at is not an AutoIt script. The program doesn't automatically go to that field. The Info Window shows: Title COREL Window Info Class: #32770 Control Info Class ComboBox Thanks, Docfxit Link to comment Share on other sites More sharing options...
AutoBert Posted August 10, 2016 Share Posted August 10, 2016 Read about Control* functions in the help file. Link to comment Share on other sites More sharing options...
spudw2k Posted August 10, 2016 Share Posted August 10, 2016 (edited) Here is a tailored example from help file for ControlFocus function (You will also need the instance of the control in addition to the class, in this example the instance is 1) Example() Func Example() ; Wait 10 seconds for the Notepad window to appear. Local $hWnd = WinWait("Corel", "", 10) ; Set input focus to the edit control of Corel using the handle returned by WinWait. ControlFocus($hWnd, "", "ComboBox1") EndFunc ;==>Example Edited August 10, 2016 by spudw2k Spoiler Things I've Made: Always On Top Tool ◊ AU History ◊ Deck of Cards ◊ HideIt ◊ ICU ◊ Icon Freezer ◊ Ipod Ejector ◊ Junos Configuration Explorer ◊ Link Downloader ◊ MD5 Folder Enumerator ◊ PassGen ◊ Ping Tool ◊ Quick NIC ◊ Read OCR ◊ RemoteIT ◊ SchTasksGui ◊ SpyCam ◊ System Scan Report Tool ◊ System UpTime ◊ Transparency Machine ◊ VMWare ESX BuilderMisc Code Snippets: ADODB Example ◊ CheckHover ◊ Detect SafeMode ◊ DynEnumArray ◊ GetNetStatData ◊ HashArray ◊ IsBetweenDates ◊ Local Admins ◊ Make Choice ◊ Recursive File List ◊ Remove Sizebox Style ◊ Retrieve PNPDeviceID ◊ Retreive SysListView32 Contents ◊ Set IE Homepage ◊ Tickle Expired Password ◊ Transpose ArrayProjects: Drive Space Usage GUI ◊ LEDkIT ◊ Plasma_kIt ◊ Scan Engine Builder ◊ SpeeDBurner ◊ SubnetCalcCool Stuff: AutoItObject UDF ◊ Extract Icon From Proc ◊ GuiCtrlFontRotate ◊ Hex Edit Funcs ◊ Run binary ◊ Service_UDF Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now