Window.EnumerateProcesses
Описание
Возвращает таблицу, содержащую список всех работающих в настоящий момент процессов и связанных с ними дескрипторов окна.
ПараметрыTopLevel
(логический) Возвращать ли данные только от окон верхнего уровня:
Примечание: Каким образом определяется окно верхнего уровня - оно должно не иметь окна-хозяина (владельца) и должно быть видимым.
ВозвратResultVariable
(таблица) Таблица дескрипторов окна и процессов им принадлежащих. В этой таблице дескрипторы окна являются ключами, а значениями являются пути к исполняемым файлам, породившим эти процессы.
Если происходит ошибка или не существует процессов (процессы всегда должны быть), возвращается значение nil.
Можно использовать действие Application.GetLastError для определения случился ли отказ в работе этого действия и почему.
При добавлении действия из редактора скрипта, можно использовать это поле для определения переменной, которая возвращает значение, сохраняющееся в ней.
Смотрите также: Связанные действия
ПримерыПример 1open_processes = Window.EnumerateProcesses();Получаем дескрипторы окна и пути к исполняемым файлам для каждого процесса, работающего в настоящий момент, и сохраняем их в таблице по имени open_processes. Пример 2instances_of_file = 0; file_to_check_for = "autorun.exe"; -- have all lowercase (все буквы строчные) processes = Window.EnumerateProcesses(); for j, file_path in pairs(processes) do file = String.SplitPath(file_path); if (String.Lower(file.Filename .. file.Extension)) == file_to_check_for then instances_of_file = instances_of_file + 1; end end if instances_of_file > 1 then Window.Hide(Application.GetWndHandle()); Dialog.Message("Error", "Autorun already running: code: already running"); Window.Close(Application.GetWndHandle(), CLOSEWND_TERMINATE); else Window.Show(Application.GetWndHandle()); endВ качестве примера, предположим, что вы запускаете вашу программу, только в том случае, если нет другого файла autorun.exe, запущенного в системе. Для этого используем действие Window.EnumerateProcesses, и проверяем каждый процесс против имени файла autorun.exe.
Смотрите также: Связанные действия
|