Что нового

Как мне "посмотреть" на punto switcher - запущен ли?

akoulev

Чайник
Сообщения
164
Репутация
2
Как-то мне любезно подсказали (ещё на старом форуме) про такую конструкцию:
Код:
Opt('WinTitleMatchMode', 2)
If WinExists ("Windows Internet Explorer") Then
	;нихрена
	;Sleep(2222)
	;Exit
Else
	run ("C:\Program Files\Internet Explorer\iexplore.exe")
	Sleep(3222)
EndIf

, и жил я с этой конструкцией долго и счастливо. :smile:

Но вот понадобилось мне -по образу и подобию- нечто типа:
Код:
Opt('WinTitleMatchMode', 2)
	While Not WinExists ("punto.exe"); "пока нет дома" PuntoSwitcher-а...
	;нихрена
	If WinExists ("punto.exe") Then ExitLoop; и даже вот с таким довеском не работает
		Sleep(2222)
		MsgBox("","Статус:", "Пашу, как лошадка!", 1)
	WEnd

, но даже с "довеском" не работает; и что характерно - причина-то понятна: в 1-м примере, WinExists ("Windows Internet Explorer") - это отнюдь не "C:\Program Files\Internet Explorer\iexplore.exe".
А вот как узнать название, соответствующее "punto.exe"?
Если получилось сумбурно - извините; я, разумеется, готов ответить на Ваши уточняющие вопросы.

Итак, "Windows Internet Explorer" <==> "C:\Program Files\Internet Explorer\iexplore.exe";
?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_?<==> "punto.exe"
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 156
Репутация
2 329
akoulev [?]
как узнать название, соответствующее "punto.exe"?
Если нужно отследить его окно, то вот функция для получения заголовка окна по имени процесса:

Код:
$sPunto_Window = _ProcessGetWindow("punto.exe")

Func _ProcessGetWindow($iPID, $iRet=-1)
	Local $aWinList = WinList()
	Local $aRet[2]
	
	If IsString($iPID) Then $iPID = ProcessExists($iPID)
	
	For $i = 1 To UBound($aWinList)-1
		If WinGetProcess($aWinList[$i][1]) = $iPID Then
			$aRet[0] = $aWinList[$i][0] ;Title
			$aRet[1] = $aWinList[$i][1] ;WinHandle
			
			If $iRet = 0 Then Return $aRet[0]
			If $iRet = 1 Then Return $aRet[1]
			
			Return $aRet
		EndIf
	Next
	
	Return SetError(1, 0, $aRet)
EndFunc


а если нужно просто отследить присутствие процесса, то просто используем ProcessExists("punto.exe").
 
Верх