Что нового

Как активировать окно, если известно название процесса

Suppir

Продвинутый
Сообщения
967
Репутация
62
Добрый день!

У программы постоянно меняется название окна (titlebar). Мне известно название программы в процессах. Как максимально быстро активировать основное окно программы (или получить его хендл)? Будет ли меняться хендл окна, если его название опять поменяется?
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
Проблеммка еще в том, что нужно получать хендл окна (или его название) максимально быстро.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Suppir,
Может _WinAPI_EnumProcessWindows()?


Добавлено:
Сообщение автоматически объединено:

Suppir [?]
Будет ли меняться хендл окна, если его название опять поменяется?
ИМХО, вряд ли.
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
Хм, в моей версии AutoIt (v3.3.6.1) нет такой функции. Попробую более позднюю поставить.
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
А, понял. У меня WinAPIEx установлена, но для этой библиотеки, вроде, отдельное описание есть.


Добавлено:
Сообщение автоматически объединено:

madmasles сказал(а):
Suppir,
Может _WinAPI_EnumProcessWindows()?

Проблема в том, что для _WinAPI_EnumProcessWindows необходимо указывать PID, а у меня его нет, только название процесса.
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Suppir [?]
Проблема в том, что для _WinAPI_EnumProcessWindows необходимо указывать PID, а у меня его нет, только название процесса.
Код:
#Include <WinAPIEx.au3>

Local $aWnd, $iPid = ProcessExists( "explorer.exe" )
If $iPid Then
	$aWnd = _WinAPI_EnumProcessWindows( $iPid )
	If UBound( $aWnd ) > 1 Then _
		WinActivate( $aWnd[1][0] )
EndIf
 
Верх