3 posts in this topic
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 there anyway to handle this?
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
I have windows 10 64 bit pro with the latest versions of scite and 22.214.171.124 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
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.
A long time I was using "PDFCreator - Print2PDF" made by @ptrex
Thanks to @ptrex for this UDF:
which was for me an inspiration, not only for PDFCreator, but to learn ActiveX controls.
I many times modified @ptrex UDF, but recently more and more felt the need to write it almost from scratch.
Here it is:
How to use it ?
There is a region "Example Init" so you need just to run this UDF.
#Region PDFCreator.au3 - Example Init If Not @Compiled And @ScriptName = 'PDFCreator.au3' Or @ScriptName = 'PDFCreator_DebugIt.au3' Then $g__oPDFCreator_ErrorHandler = ObjEvent("AutoIt.Error", "__PDFCreator_ErrFunc") #cs Not working yet _PDFCreator_ConvertDocument(@ScriptDir & '\PDFCreator.rtf',@ScriptDir & '\PDFCreator_2.pdf') ShellExecute(@ScriptDir & '\PDFCreator.rtf') ShellExecute(@ScriptDir & '\PDFCreator_2.pdf') MsgBox(0, 'END', '_PDFCreator_ConvertDocument()') #ce _PDFCreator_Example_1_RTF2PDF() MsgBox(0, 'END', '_PDFCreator_Example_1_RTF2PDF()') _PDFCreator_Example_2_COMBINEALL() MsgBox(0, 'END', '_PDFCreator_Example_2_COMBINEALL()') _PDFCreator_Example_3_COMBINEALL() MsgBox(0, 'END', '_PDFCreator_Example_3_COMBINEALL()') MsgBox(0, 'EXIT', 'Close this MsgBox to exit example script.') ;~ MsgBox(0, '$g__oPDFCreator.cWindowsVersion', $g__oPDFCreator.cWindowsVersion) Exit EndIf #EndRegion PDFCreator.au3 - Example Init REMAKRS: this UDF is for PDFCreator 1.x.x not for 2.x.x
some reference and examples for PDFCreator 2.x.x