Что нового

Проверка наличия окна по хендлу

vovsla

Осваивающий
Сообщения
607
Репутация
36
Есть 2 программы основная и второстепенная. В основной программе производится запуск второстепенной с передачей хендла окна
Код:
Func RunAllComponents()
	For $CNum=1 To $ComponentsArr[0]
		If Not FileExists($ScriptDir&$ComponentsArr[$CNum]) Then Msg(16, 'Отсутсвует один из компонентов программы - '&$ComponentsArr[$CNum])
		Run($ScriptDir&$ComponentsArr[$CNum]&' ParentWinHandle='&$Form1)
		ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $ScriptDir = ' & $ScriptDir&$ComponentsArr[$CNum]&' ParentWinHandle='&$Form1 & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
		ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $ScriptDir = ' & WinExists($Form1) & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console, результат - 1
	Next
	$rr=StringToASCIIArray($Form1)
	_ArrayDisplay($rr)
EndFunc


Во второстепенной программе производится проверка наличия окна основной программы
Код:
Func ParentTestExist()
	If Not WinExists($Form1) Then
		Msg(16, 'Нет родительского окна, программа будет завершена'& @CRLF & $Form1 & @CRLF & WinExists($Form1) & @CRLF & WinGetTitle($Form1) )
	$rr=StringToASCIIArray($Form1)
	_ArrayDisplay($rr)
		$arr=WinList()
		_ArrayDisplay($arr)
		Exit
	EndIf
EndFunc


При том что в основной программе WinExists($Form1) =1 в дочерней почему-то WinExists($Form1) = 0
При отображении списка WinList() во второстепенной программе есть окно главной программы и именно с тем хендлом который передается второстепенной программе.
Массивы хендла StringToASCIIArray в основной и второстепенной программе одинаковые.
Почему второстепенная программа не видит окна основной программы по хендлу?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Код:
If Not WinExists(HWnd($Form1)) Then
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
В принципе WinExists в данном случае можно не использовать, т.к. HWnd сама проверяет наличие окна с указанным дескриптором. Просто возвращает она не 0/1, а 0 или сам дескриптор.
 
Автор
V

vovsla

Осваивающий
Сообщения
607
Репутация
36
Я использую HWnd когда окно точно есть, с помощью WinExists провожу регулярный мониторинг есть/нет
 
Верх