Что нового

Какому процессу принадлежит окно?

V

VitAl2013

Гость
Продолжаю активировать окна. Теперь надо сделать проверку на принадлежность окна определённому процессу. Как это сделать?


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

Сам отвечу, но если есть ещё способ, то не стесняйтесь - дополняйте. Так как оно какое-то не изящное, хоть и короткое. Хотелось бы прям как параметр его вводить при активации.

Получаем PID окна, например так:
Код:
$pid = WinGetProcess("Window name", "")

потом используя библиотеку Process.au3 выясняем имя
Код:
#include <Process.au3>
$name = _ProcessGetName($pid)
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Да, это самый оптимальный вариант :ok:
сам уж начал писать скрипт сюда, совершенно забыв про эту UDF. но вспомнив, обнаружил что там точно такая же функция ;D
Код:
$title = 'Заголовок нужного окна'
$pid = WinGetProcess($title)
$aProc = ProcessList(); 
For $i = 1 to $aProc[0][0]
   If $pid = $aProc[$i][1] Then MsgBox(64, 'Processor identifier', 'The window with title ' & _
           $title & ' is owned by process ' & $aProc[$i][0] & ' with PID = ' & $aProc[$i][1])
Next
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Я советую вам скачать библиотеку WinAPIEx.au3 и положить ее в "...\AutoIt3\Include". Рано или поздно вы придете к необходимости ее использования. А там для этого есть функции:

_WinAPI_EnumProcessWindows
_WinAPI_GetModuleFileNameEx
 
Верх