У меня на WinGetText() завязано несколько функций. Но сама операция WinGetText достаточно затратная по времени - 0,5 секунд. Кто-нибудь знает способ ускорить эту операцию? (получение видимого текста из активного окна). Может быть через dll. Спасибо.
В некоторых случаях (когда нужна информация только из названия приложения) я использую WinGetTitle() - работает моментально. Но иногда нужна именно видимая информация внутри приложения.
На машине установлена Windows 7? Может быть причина в Aero? Правда я не знаю на сколько это справедливо к тексту, но вот функция PixelGetColor с включенным Aero работает очень медленно.
P.S. Хотя, на текст наверно Aero влиять все-таки не должен (только на графику).
Opt("WinWaitDelay",0)Run("notepad.exe H:\Test.txt");запускаем наш текстовый файл с помощью БлокнотаWinWait("[Class:Notepad]");ждем окно по имени класса$hWND1=WinGetHandle("[Class:Notepad]");берем хэндл основного нашего окна$hWND2=ControlGetHandle($hWND1,"","[Class:Edit]");берем хэндл контрола Edit из родительского хэндла$text=ControlGetText("","",$hWND2); получаем текст контрола Edit через его хэндл;MsgBox(64, "text", $text)
Интересно. Вот просто интересно. Как скорость на этом примере?
0,4 секунды. Но у меня нужно считывать инфу не из блокнота, а программы со сложным GUI. Там сама команда WinGetText() работает 0,5 секунды на вполне современном компьютере, а на celeron 2600 - более секунды.
Если просто в Scite запускаю одну команду WinGetText(""), то на домашнем компе занимает 1/4 секунды.