ur

how to select only part of control id

2 posts in this topic

#1 ·  Posted (edited)

I need to set value to a text box to a desktop application.

 

I am trying to do that with 

ControlSetText($MartConfigWindow, "", "WindowsForms10.EDIT.app.0.378734a6", $dbserver)

 

where $MartConfigWindow has the window ID.

And the text box field is having class as WindowsForms10.EDIT.app.0.378734a6

 

THis code is working on one machine but on some machines, the last part of ID WindowsForms10.EDIT.app.0.378734a6, means 378734a6

is changing.

 

Is there anyway to handle this?

Edited by ur

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

    • zerothesavior
      By zerothesavior
      I can't get this to work.
      ControlSetText("[CLASS:#32770]", "", "[CLASS:Edit; INSTANCE:3]", $sString) Am I doing something wrong? The string is not blank, I checked it with a message box.
      Here is the information from the window:
      >>>> Control <<<< Class: Edit Instance: 3 ClassnameNN: Edit3 Name: Advanced (Class): [CLASS:Edit; INSTANCE:3] ID: 1001 Text: Position: 47, 78 Size: 187, 14 ControlClick Coords: 112, 9 Style: 0x50000380 ExStyle: 0x00000000 Handle: 0x000000000021064A  
    • Carm01
      By Carm01
      All,
       
      I have windows 10 64 bit pro with the latest versions of scite and 3.3.14.2 installed. Not that it matters for this instance.
      My monitor resolution is 1920 x 1080 progressive with a refresh rate of 64 HZ ( more in a min on that )
      I have a Nvida gtx 960 card and an HP monitor
      Since moving to Windows 10 and this configuration ( latest drivers of course ) I am unable to see the " ControlSetText " being displayed under the standard 60HZ refresh rate in WIndows 10. On Windows 7 machines this is flawless and always had been. The ControlSetText is updated at an extremely fast rate. IF I change the resolution one notch lower in windows 10 the display displays the text like in Windows 7 60HZ refresh. IF I user the max resolution 1920 x 1080 @ 60 HZ nothing is displayed in Windows 10. IF I create a custom resolution profile and just change the refresh rate to 64HZ it displays normally in Windows 10.
      If I enable " GUIGetMsg() " it displays fine but processes very slow fyi
      I will place the relevant code below. I am wondering:
      1) what is the max refresh/update rate for ControlSetText ( fasted it can be updated )
      2) Could this be adjusted either in code without hampering processing speed
      3) Does this need to be addressed in AutoIT program itself as a bug ?
       
       
       
      #include <Array.au3> #include <File.au3> Local $aRetArray, $aArray local $sFilePath = @ScriptDir & "\info.txt" _FileReadToArray($sFilePath, $aRetArray) Local $aArray[UBound($aRetArray)] SplashTextOn("Percent Complete", "", 130, 40, -1, -1, 16, "") Local $a = 0 Local $hTimer = TimerInit() $bb = UBound($aRetArray) - 1 For $i = 1 To UBound($aRetArray) - 1 ; ;GUIGetMsg();prevent high cpu usage $line = $aRetArray[$i] If StringRight($line, 2) = " X" Then If $i = 1 Then $line1 = StringLen($line) - StringLen($aRetArray[$i]) $line2 = StringRight($line, $line1) $line3 = $aRetArray[$i] $line4 = $aRetArray[$i + 1] Else $line1 = StringLen($line) - StringLen($aRetArray[$i - 1]) $line2 = StringRight($line, $line1) $line3 = $aRetArray[$i - 1]; $line4 = $aRetArray[$i + 1]; EndIf $aArray[$a] = $i & "| " & $line3 & "| " & $line2 & "| " & $line4 $a = $a + 1 EndIf ControlSetText("Percent Complete", "", "Static1", Round((($i / $bb) * 100), 2)) Next Thanks in advance
    • louabill
      By louabill
      It seems that ControlSetText() sends only the first character to Scintilla controls.
      To see this, try the following:
      Open a SciTE window
      Put the following line into the window
      ControlSetText("[CLASS:SciTEWindow]","","[CLASS:Scintilla;Instance:1]", 'here is some text') and save the file.
      Go to the beginning of the line.
      Hit F5 to run the line.
      What I see is that the single letter h overwrites the text in the window instead of the desired text.
      Does anyone know how to get the Scintilla control to play nice? If not, is this a bug I should be reporting to the Autoit folks?
      I would like to avoid ControlSend(), because it has trouble with Unicode.
      Thanks for any tips.
      --- original post ---
      In an AutoIt script, I use ControlSetText() to send text to the Command window in the Stata statistical package.
      In Stata 14, the Command window was changed to a Scintilla control which understands Unicode instead of a RichText control (which used Latin1 encoding). In the past, all worked well, now only the first character gets put in the control.
      Here is an example which illustrates how it worked and now fails (which requires a running Stata 13 and a running Stata 14):
      Opt("WinTitleMatchMode", 1) ## in Stata 13 and earlier, the Command window was a RichText control ControlSetText("Stata/MP 13","","[CLASS:RichEdit20A;Instance:1]", "sysuse auto") ## result: 'sysuse auto' in the Command window ## in Stata 14, the Command window is a Scintilla control ControlSetText("Stata/MP 14","","[CLASS:Scintilla;Instance:1]", "sysuse auto") ## result: the letter 's' in the Command window I can use ControlSend() to send plain text successfully, but I'm betting it won't work properly with Unicode because the function is not Unicode-ready, yet.
      Any hints about what I need to do to fix the problem?
      I realize this is somewhat specialized because of the receiving software, but perhaps someone knows something about sending text to Scintilla Unicode-friendly controls.
      Thanks for any help.
    • SorryButImaNewbie
      By SorryButImaNewbie
      Hello!
      I have a little script and in it a function that is responsible for handling saves in PDFCreator. When such a situation arise, it should set the destination folder to one predestinated in a global variable (a folder in our innernetwork).
      Originally I achieved this by moving the window to 0,0 then mouseclick on a specified coordinates on the screen (I know, I know, thats why I want to change it something more reliable, more intelligent)
      My candidates were ControlSetText, ControlSend and ControlCommand. I rejected ControlCommand outright since it isn't really for this. ControlSend cause the script to exit, when it reaches the first point where it would use the function.
      ControlSetText returns the next console (run_debug_mode=Y)
      >"C:Program FilesAutoIt3SciTE..autoit3.exe" /ErrorStdOut "D:régi gép mentésDesktopAutomata TesztelésUD - uszi új BÉTAud_uszi 3.0.1 teszter.au3"     "D:régi gép mentésDesktopAutomata TesztelésUD - uszi új BÉTAud_uszi 3.0.1 teszter.au3" (1170) : ==> Error in expression.: ControlSetText("Save as", "", "[CLASSNN:ToolbarWindow323]", & $PDFmentesPath) ControlSetText("Save as", "", "[CLASSNN:ToolbarWindow323]", ^ ERROR >Exit code: 1    Time: 34.31    
      Here is my function so far: (sorry its under construction)
      Func RenamePDF($TopUpName) Sleep(1000) WinActivate("PDFCreator 1.", "") WinWaitActive("PDFCreator 1.", "") ControlCommand("PDFCreator 1.", "", "[CLASSNN:ThunderRT6TextBox6]", "EditPaste", $TopUpName) ControlSetText("PDFCreator 1.", "", "[CLASSNN:ThunderRT6TextBox6]", $TopUpName) ControlClick("PDFCreator 1.", "", "[CLASSNN:ThunderRT6CommandButton7]") $WindowWaitCheck = WinWaitActive("Mentés másként", "", 5) If $WindowWaitCheck = 0 Then ControlClick("PDFCreator 1.", "", "[CLASSNN:ThunderRT6CommandButton7]") EndIf WinMove("Save as", "", 0, 0) ;MouseClick("", 565, 50) ;Not like this, to many possible errors! ;Send("{BS}" & $PDFmentesPath & "{Enter}") ;ControlCommand ;ControlSend("Save as", "", "[CLASSNN:ToolbarWindow323]", & $PDFmentesPath) ControlSetText("Save as", "", "[CLASSNN:ToolbarWindow323]", & $PDFmentesPath) ControlClick("Save as", "", "[CLASSNN:Button1]") Sleep(1500) EndFunc ;==>RenamePDF I have a guess that there is a problem in how I try to write/send the variable $PDFmentesPath, but not sure I know how should I do it. Trying random things that come to mind for now.
      Thank you for your time and help!
    • SorryButImaNewbie
      By SorryButImaNewbie
      Hello everyone!
      I'm trying to polish some of my functions now that I botched up my GUI and basic functions, and have a somewhat realiable code. I happen to have a few questions, to which I would like to get some insight from you.
      I have an "old" problem with my script. While it works with the PDFCreator (1.7.1 but I think It just got updated a few days ago)  it sometimes seems to skip ControlSetText. I don't know why this happens but I developed a habbit of double up on it, which decresed the occurrence of these bugs but it's far from a solution, and it isnt even an elegant bandage on it. Anyidea why this could happen? In some other functions I used the click on the said coordinates twice then send Delete and type the name i want, that seems to work well.
      Another problem is, that sometimes when I try to make the script to click on a button, it simply doesnt do that, or since everytime this button is the Save button  (in this example at least)  which is the highlighted button on the form I simply used Send("{ENTER}") but it doesnT perform on a 100% neither. Because of this I'm experimenting with the WinWaitActivate 's timeut function. I'm trying to make it so if the window that should pop up next isn't activateing, the script tries to click on the Save button again. When I tried to test it, I commented out the first Save button click to see how it works, and It basicly Jumped a "nameing syntax" ahead (sorry don't really know how else to say it) so instead of blablabla(1) it wrote blablabla(2) and tried to save like that. I think this is because of a logical error from my part, but can't seem to figure it out (Once I get it wrok I think I will write it as a different function and call it everytime i need it, that would make the code a bit more tidy)
      Also a the beginning of the code I try to handle the possibility of the PDFCreator signaling that there is a new update to download, I tried to check for the MsgBox but it didn't work when a real update came while i was working and it stuck. Makeing things worst I'm not sure how to test it effectivly without actuaql software update, should I try to write a MsgBox for i myself? I don't think thats a dependable test of the script.
      I would also like to check the Text from the textbox PDFCreator use for saving the PDFs, to see if it's at least something like it should be, I already have a solution for that, and I gonna check for it now but I think this is already a pretty impressive wall of text so thank you if you even read through it. I maybe ask other questions later. Ask anything and I try to provide what you asks for.
      Thanks again
      Code: 
      ControlClick("Megerősítés", "Igen", "[CLASSNN:TBitBtn2]") Sleep(500) WinWaitActive("Információ", "Sikeres Topup feltöltés") WinKill("Információ", "Sikeres Topup feltöltés") Sleep(3000) If WinActivate("PDFCreator", "Újabb verzió érhető el:") Then ;PDF Creator new version handleing WinClose("PDFCreator", "Újabb verzió érhető el:") EndIf WinWaitActive("PDFCreator") Sleep(500) ControlFocus("PDFCreator", "", "ThunderRT6TextBox5") Sleep(1000) Local $date = "\" & ControlGetText("PDFCreator", "", "[CLASSNN:ThunderRT6TextBox5]") Local $TopUpdate = "TeszttTopUp_KP_Euro_sztornó_vásárlás" & ControlGetText("PDFCreator", "", "[CLASSNN:ThunderRT6TextBox5]") Local $TopUpdate2 = "TeszttTopUp_KP_Euro_számla_sztornó_vásárlás" & ControlGetText("PDFCreator", "", "[CLASSNN:ThunderRT6TextBox5]") Sleep(500) WinActivate("Folyószámla", "") ControlClick("Folyószámla", "", "[CLASSNN:TAdvBitBtn12]") WinActivate("Információ", "") Sleep(500) Local $Egyenleg = WinGetHandle("Információ", "") _ScreenCapture_CaptureWnd(@MyDocumentsDir & $date & "egyenleg.jpg", $Egyenleg) Sleep(400) WinKill("Információ") WinActivate("PDFCreator") Sleep(2000) ControlSetText("PDFCreator", "", "ThunderRT6TextBox6", $TopUpdate & "(1)") Sleep(500) ControlSetText("PDFCreator", "", "ThunderRT6TextBox6", $TopUpdate & "(1)") ControlClick("PDFCreator", "", "[CLASSNN:ThunderRT6CommandButton7]") Sleep(300) WinWaitActive("Mentés másként", "", 10) If WinWaitActive = 0 Then WinActivate("PDFCreator") ControlClick("PDFCreator", "", "[CLASSNN:ThunderRT6CommandButton7]") WinWaitActive("Mentés másként", "", 10) EndIf Sleep(300) Send("{ENTER}") WinWaitActive("PDFCreator","",10) If WinWaitActive("PDFCreator") = 0 Then ControlClick("Mentés Másként","","[CLASSNN:Button1]") WinWaitActive("PDFCreator","",10) EndIf Sleep(1000) ControlSetText("PDFCreator", "", "ThunderRT6TextBox6", $TopUpdate & "(2)") Sleep(1000) ControlSetText("PDFCreator", "", "ThunderRT6TextBox6", $TopUpdate & "(2)") ControlClick("PDFCreator", "", "[CLASSNN:ThunderRT6CommandButton7]") Sleep(300) WinWaitActive("Mentés másként", "", 10) If WinWaitActive = 0 Then WinActivate("PDFCreator") ControlClick("PDFCreator", "", "[CLASSNN:ThunderRT6CommandButton7]") WinWaitActive("Mentés másként", "", 10) EndIf Sleep(300) Send("{ENTER}") WinWaitActive("PDFCreator","",10) If WinWaitActive("PDFCreator") = 0 Then ControlClick("Mentés Másként","","[CLASSNN:Button1]") WinWaitActive("PDFCreator","",10) EndIf Sleep(1000) ControlSetText("PDFCreator", "", "ThunderRT6TextBox6", $TopUpdate2 & "(1)") Sleep(1000) ControlSetText("PDFCreator", "", "ThunderRT6TextBox6", $TopUpdate2 & "(1)") ControlClick("PDFCreator", "", "[CLASSNN:ThunderRT6CommandButton7]") Sleep(300) WinWaitActive("Mentés másként", "", 10) If WinWaitActive = 0 Then WinActivate("PDFCreator") ControlClick("PDFCreator", "", "[CLASSNN:ThunderRT6CommandButton7]") WinWaitActive("Mentés másként", "", 10) EndIf Sleep(300) Send("{ENTER}") WinWaitActive("PDFCreator","",10) If WinWaitActive("PDFCreator") = 0 Then ControlClick("Mentés Másként","","[CLASSNN:Button1]") WinWaitActive("PDFCreator","",10) EndIf Sleep(1000) ControlSetText("PDFCreator", "", "ThunderRT6TextBox6", $TopUpdate2 & "(2)") Sleep(1000) ControlSetText("PDFCreator", "", "ThunderRT6TextBox6", $TopUpdate2 & "(2)") ControlClick("PDFCreator", "", "[CLASSNN:ThunderRT6CommandButton7]") Sleep(300) WinWaitActive("Mentés másként", "", 10) If WinWaitActive = 0 Then WinActivate("PDFCreator") ControlClick("PDFCreator", "", "[CLASSNN:ThunderRT6CommandButton7]") WinWaitActive("Mentés másként", "", 10) EndIf Sleep(300) Send("{ENTER}") WinActivate("Folyószámla") ControlClick("Folyószámla", "Topup sztornó (utolsó)", "[CLASSNN:TAdvBitBtn13]") ; Miért van Befizetés ablak? WinActivate("Megerősítés") Send("{ENTER}") WinWaitActive("Megerősítés") ControlClick("Megerősítés", "", "[CLASSNN:TBitBtn1]") Sleep(500) WinWaitActive("PDFCreator","",10) If WinWaitActive("PDFCreator") = 0 Then ControlClick("Mentés Másként","","[CLASSNN:Button1]") WinWaitActive("PDFCreator","",10) EndIf