Что нового

WinWait, почему не определяет открытое окно?

bingo

Новичок
Сообщения
8
Репутация
0
Добрый день.
Запускаю через Run приложение plink.exe.
Хочу проверять открытие окна по команде WinWait, а не просто по тайм-ауту.
Не работает, прохожу дальше по скрипту только по тайм-ауту.
В чем может быть дело?
Пробовал и двойные кавычки, и одинарные, и с полным путем приложения, и программой AutoIt Window Info проверял окно, и CLASS пробовал.
Пока безрезультатно.

Пример ниже:
Local $iPID = Run("plink -ssh -pw 12345 1.2.3.4")
WinWait($iPID, "plink.exe", 15)
 
Автор
B

bingo

Новичок
Сообщения
8
Репутация
0
Я перепробовал все, что только в голову пришло, в вопросе был последний вариант.
Более ранние:
WinWait("plink.exe", "", 15)
WinWait("plink", "", 15)
WinWait("[CLASS:ConsoleWindowClass]", "", 15)
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
bingo
Пример

Код:
#include <Array.au3>

Global $iPID = Run("plink -ssh -pw 12345 1.2.3.4")

_Example1()
_Example2()
_Example3()

Func _Example1()
	Local $hWnd = WinWait(@ScriptDir & "\plink.exe", "", 15)
	MsgBox(0, "Example 1", "HWND: " & $hWnd)
EndFunc   ;==>_Example1

Func _Example2()
	Opt("WinTitleMatchMode", -2)

	Local $hWnd = WinWait("plink.exe", "", 15)
	MsgBox(0, "Example 2", "HWND: " & $hWnd)
EndFunc   ;==>_Example2

Func _Example3()
	_ArrayDisplay(_PIDGetHWND($iPID, "plink.exe"), "Example 3: TITLE | HWND")
EndFunc   ;==>_Example3

Func _PIDGetHWND($iPID, $sTitle = Default, $iCasesense = 0)
	Local $aList = WinList(), $j = 1
	If $iCasesense = Default Then $iCasesense = 0

	For $i = 1 To $aList[0][0]
		If $iPID = WinGetProcess($aList[$i][0]) Then
			If $sTitle <> Default And Not StringInStr($aList[$i][0], $sTitle, $iCasesense) Then ContinueLoop
			$aList[$j][0] = $aList[$i][0]
			$aList[$j][1] = $aList[$i][1]
			$j += 1
		EndIf
	Next

	If $j = 1 Then Return SetError(1, 0, 0)

	$aList[0][0] = $j
	ReDim $aList[$j][2]

	Return $aList
EndFunc   ;==>_PIDGetHWND
 
Автор
B

bingo

Новичок
Сообщения
8
Репутация
0
Спасибо большое.
_Example1 работает как и мой вариант, т.е. ждет тайм-аута, а остальные работают как надо.
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
bingo сказал(а):
Спасибо большое.
_Example1 работает как и мой вариант, т.е. ждет тайм-аута, а остальные работают как надо.

А какой у вас полный заголовок у plink.exe? _Example1 расcчитан на то что в заголовке будет полный путь к файлу plink.exe относительно скрипта
 
Автор
B

bingo

Новичок
Сообщения
8
Репутация
0
Tempo сказал(а):
А какой у вас полный заголовок у plink.exe? _Example1 расcчитан на то что в заголовке будет полный путь к файлу plink.exe относительно скрипта

Запускаюсь с флешки.
G:\plink.exe

Да, сам скрипт находится там же.
Все в корне.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
bingo

Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.
 
Верх