veselroger
Новичок
- Сообщения
- 16
- Репутация
- 3
Здравствуйте.
Столкнулся с проблемой, которую понять не могу, а вроде бы она элементарная.
Функция WinExists и WinWaitActive видят не только существующие, но и несуществующие окна(с title набранным наугад вроде "dfsfdsfsdfs" и произвольными ID).
Смысл кода - в поля Input вводятся данные(Title,Class,Handle и PID). Далее составляется строка с непустыми значениями и ищется по этой строке окно. Далее оно становится активным. Ниже часть кода, который является OnEvent'ом. В остальном коде лишь создаётся Tab для отображение полей и лэйблов.
Пробовал как только мог, всё равно видятся окна, которых не существует в природе. В чём у меня может быть ошибка? Заранее благодарен.
Плюс, почему-то не ищется окно ни по чему, кроме заголовка. Тестирую на обычном блокноте и калькуляторе. Да, если такую-же проверку выполнить тем же текстом, но вбив его в коде - всё работает.
Это особенность AutoIT или можно как-нибудь обойти это?
Столкнулся с проблемой, которую понять не могу, а вроде бы она элементарная.
Функция WinExists и WinWaitActive видят не только существующие, но и несуществующие окна(с title набранным наугад вроде "dfsfdsfsdfs" и произвольными ID).
Смысл кода - в поля Input вводятся данные(Title,Class,Handle и PID). Далее составляется строка с непустыми значениями и ищется по этой строке окно. Далее оно становится активным. Ниже часть кода, который является OnEvent'ом. В остальном коде лишь создаётся Tab для отображение полей и лэйблов.
Код:
Func FindWindow()
$stroka="["
If GUICtrlRead ($InputTitle)<>"" then $stroka=$stroka&"TITLE:"&GUICtrlRead ($InputTitle)&";"
If GUICtrlRead ($InputClass)<>"" then $stroka=$stroka& " CLASS:"&GUICtrlRead ($InputClass)&";"
If GUICtrlRead ($InputHandle)<>"" then $stroka=$stroka& " HANDLE:"&GUICtrlRead ($InputHandle)&";"
IF GUICtrlRead ($InputPID)<>"" then $stroka=$stroka& " PID:"&GUICtrlRead ($InputPID)
$znak=StringMid($stroka, StringLen($stroka), 1)
if $znak=";" then $stroka=StringMid($stroka,1,StringLen($stroka)-1)
$stroka=$stroka&"]"
msgbox (1,"stroka",$stroka)
$hwnd=WinGetHandle($stroka)
If WinExists($hwnd) then
msgbox (1,"Окно найдено","Окно найдено")
WinActivate($hwnd)
Else
msgbox (1,"Ошибка","Окно обнаружить не удалось!")
Endif
EndFunc ;<--FindWindow - Найти окно по параметрам
Пробовал как только мог, всё равно видятся окна, которых не существует в природе. В чём у меня может быть ошибка? Заранее благодарен.
Плюс, почему-то не ищется окно ни по чему, кроме заголовка. Тестирую на обычном блокноте и калькуляторе. Да, если такую-же проверку выполнить тем же текстом, но вбив его в коде - всё работает.
Это особенность AutoIT или можно как-нибудь обойти это?