WinGet -Autohotkey
Возвращает идентификатор окна, идентификатор его процесса, имя процесса, список элементов управления окна, список всех окон, отвечающих заданным критериям.
WinGet, OutputVar [, Cmd, WinTitle, WinText, ExcludeTitle, ExcludeText]
Параметры
| OutputVar | Имя переменной, куда будет помещён результат. |
| Cmd | Смотрите список ниже. |
| WinTitle | Заголовок или часть заголовка окна (метод поиска можно задавать командой SetTitleMatchMode). Если этот и следующие 3 параметра опущены, будет использовано последнее найденное окно. Чтобы задать окно через его класс, используйте конструкцию ahk_class ТочноеИмяКласса (можно посмотреть программой Window Spy). Чтобы использовать идентификатор процесса (PID), задайте параметр как ahk_pid %ПеременнаяСодержащаяPID%. Чтобы использовать идентификатор окна, задайте параметр как ahk_id %ПеременнаяСодержащаяID%. |
| WinText | Подстрока из одиночного текстового элемента окна (можно посмотреть программой Window Spy). Скрытые текстовые элементы определяются, если включено определение скрытого текста (команда DetectHiddenText). |
| ExcludeTitle | Окна, чей заголовок включает значение этого параметра, исключаются. |
| ExcludeText | Окна, чей текст включает значение этого параметра, исключаются. |
Cmd задаёт выполняемую операцию. Значение по умолчанию — ID. Ниже перечислены возможные значения.
ID. Bозвращает уникальный идентификационный номер (HWND/handle) окна. Если окна, подходящего под указанные параметры, нет, выходная переменная будет пустой. Функции WinExist() и WinActive() также могут быть использованы для определения идентификатора окна. Например, WinExist(«A») — быстрый способ узнать ID активного окна. Чтобы узнать HWND элемента управления (для последующего использования с Post/SendMessage или DllCall) воспользуйтесь командами ControlGet Hwnd или MouseGetPos.
IDLast. То же, что выше, но будет возвращён идентификатор самого нижнего из совпадающих с критериями окон. Если подходящее окно только одно, действует идентично ID. Это то же правило, по которому действует команда WinActivateBottom.
PID. Возвращает идентификатор процесса, которому принадлежит окно.
ProcessName. Определяет имя процесса (например, notepad.exe).
Count. Возвращает число существующих окон, подходящих под параметры WinTitle, WinText, ExcludeTitle и ExcludeText (вернёт 0, если таких нет). Чтобы пересчитать вообще все существующие окна, опустите все эти параметры. Скрытые окна считаются, если включено определение скрытых окон (команда DetectHiddenWindows).
List. Возвращает ID всех существующих окон, подходящих под параметры WinTitle, WinText, ExcludeTitle и ExcludeText. Чтобы получить список вообще всех существующих окон, опустите все эти параметры. Каждый идентификатор сохраняется в элементе массива, имя элемента начинается с имени выходной переменной. В саму выходную переменную помещается число найденных окон (0, если не найдено ни одного). Например, если переменная названа MyArray и было найдено два окна, MyArray1 будет содержать ID первого окна, MyArray2 — второго, а сама MyArray — число 2. Окна перечисляются в порядке от верхнего к нижнему (согласно с их расположением на рабочем столе). Скрытые окна учитываются, только если включено определение скрытых окон (команда DetectHiddenWindows). Если команда применяется внутри функции, но нужно, чтобы выходной массив был глобальным, объявите MyArray как глобальную переменную до выполнения команды (обратное верно для функций, где все переменные глобальны по умолчанию, а массив должен быть локальным).
MinMax. Определяет состояние окна (свёрнуто/развёрнуто). Выходная переменная пуста, если окно не найдено; иначе принимает одно из следующих значений:
-1 Окно свёрнуто (WinRestore восстановит его).
1 Окно развёрнуто (WinRestore восстановит его).
0 Окно не свёрнуто и не развёрнуто.
ControlList. Возвращает имена всех элементов управления окна. Если подходящего окна не найдено или оно не содержит элементов управления, выходная переменная будет пустой. Иначе каждое имя состоит из имени класса элемента и его порядкового номера (ClassNN), так же, как это показывает программа Window Spy.
Каждая строка списка, кроме последней, оканчивается переводом строки (`n). Для просмотра имён элементов управления по одному используйте цикл разбора, как показано в разделе с примерами ниже.
Элементы перечисляются в Z-порядке, обычно в том же порядке происходит переход между ними по нажатию клавиши TAB, если окно поддерживает такую навигацию.
Элемент управления, находящийся под курсором мыши, может распознаваться командой MouseGetPos.
ControlListHwnd [v1.0.43.06+]. То же, что выше, с тем отличием, что возвращаются оконные идентификаторы (HWND/handle) элементов управления, а не их имена (ClassNN).
Transparent. Возвращает степень прозрачности окна (задать прозрачность можно командой WinSet). Выходная переменная будет пустой, если: 1) операционная система более старая, чем Windows XP; 2) не найдено окон, подходящих под параметры; 3) уровень прозрачности для окна не задан; 4) другие причины (вызванные действиями операционной системы) — например, окно было свёрнуто, восстановлено и/или был изменён его размер после того, как оно было сделано прозрачным. Иначе в переменную будет помещено число от 0 до 255; 0 означает невидимое окно, 255 — полностью видимое. Пример:
MouseGetPos. MouseWin WinGet, Transparent, Transparent, ahk_id %MouseWin% ; Прозрачность окна под курсором мыши.
TransColor. Возвращает цвет, который в окне задан как прозрачный (задаётся командой WinSet). Выходная переменная будет пустой, если: 1) операционная система более старая, чем Windows XP; 2) не найдено окон, подходящих под параметры; 3) окно не имеет прозрачного цвета; 4) другие причины (вызванные действиями операционной системы) — например, окно было свёрнуто, восстановлено и/или был изменён его размер после того, как оно было сделано прозрачным. Иначе в переменную будет помещено 6-значное шестнадцатеричное число, обозначающее цвет в формате RGB (красный-зелёный-синий), например, 0x00CC99. Пример:
MouseGetPos. MouseWin WinGet, TransColor, TransColor, ahk_id %MouseWin% ; Прозрачный цвет у окна под курсором мыши.
Style или ExStyle. Возвращает 8-значное шестнадцатеричное число, представляющее стиль или расширенный стиль окна. Если окон, подходящих под параметры, не найдено, выходная переменная будет пустой. Следующий пример определяет, имеет ли окно стиль WS_DISABLED:
WinGet, Style, Style, My Window Title if (Style & 0x8000000) ; 0x8000000 означает WS_DISABLED. . далее следуют действия на случай, если окно имеет этот стиль.
Следующий пример определяет, имеет ли окно стиль WS_EX_TOPMOST (поверх всех окон):
WinGet, ExStyle, ExStyle, My Window Title if (ExStyle & 0x8) ; 0x8 означает WS_EX_TOPMOST. . далее следуют действия на случай, если окно имеет этот стиль.
Смотрите список некоторых стилей в статье «Стили, используемые командами Gui и GuiControl» («Styles Usable by the Gui and GuiControl Commands»).
Примечания
Номер идентификатора окна действителен только пока существует это окно. Другими словами, если перезапустить приложение, все его окна получат уже другие идентификаторы.
Номера идентификаторов возвращаются этой командой в виде чисел (префикс «ahk_id» не включается) и сохраняются в шестнадцатеричном формате независимо от настроек, устанавливаемых командой SetFormat.
Идентификатор окна под курсором мыши можно узнать через команду MouseGetPos.
Хотя в данное время идентификаторы являются 32-битными числами без указания знака, в будущих версиях они могут стать 64-битными. Поэтому небезопасно совершать над ними числовые операции, такие как сложение, т.к. такие операции требуют, чтобы их входные строки могли быть интерпретированы как числа со знаком.
Заголовки и текст окон чувствительны к регистру. Скрытые окна не определяются, если только это не задано командой DetectHiddenWindows.
Примеры
; Пример №1: Развернуть активное окно и показать его ID: WinGet, active_id, ID, A WinMaximize, ahk_id %active_id% MsgBox, Идентификатор активного окна «%active_id%». ; Пример №2: Этот пример обойдёт все окна в системе и покажет информацию о каждом из них: WinGet, id, list. Program Manager Loop, %id% < this_id := id%A_Index% WinActivate, ahk_id %this_id% WinGetClass, this_class, ahk_id %this_id% WinGetTitle, this_title, ahk_id %this_id% MsgBox, 4, , Обход всех окон`n`n%a_index% из %id%`nahk_id %this_id%`nahk_class %this_class%`n%this_title%`n`nПродолжить? IfMsgBox, NO, break >; Пример №3: Извлекает имя каждого элемента управления активного окна из их списка: WinGet, ActiveControlList, ControlList, A Loop, Parse, ActiveControlList, `n < MsgBox, 4,, Элемент управления №%a_index%: "%A_LoopField%". Продолжить? IfMsgBox, No break >; Пример №4: Показывает в реальном времени список элементов управления активного окна: #Persistent SetTimer, WatchActiveWindow, 200 return WatchActiveWindow: WinGet, ControlList, ControlList, A ToolTip, %ControlList% return
Как узнать pid активного окна в windows
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.
Сообщения: 36
Благодарности: 2
У меня класс окно : Afx:00400000:8:00010011:00000006:01590C87
а класс другого окна: Afx:00400000:8:00010011:00000006:073E0BA9
и таких окон много Только процесс одинаков Вот Я думал по процессу делать проверку
Сообщения: 36
Благодарности: 2
есть у кого мысли ?
Сообщения: 446
Благодарности: 44
А посмотри на программку Au3Info.exe лежит там же где и AutoIT там можно получить что тор типа этого
>>>> Window >>> Control >>> Mouse >>> StatusBar >>> Visible Text >>> Hidden Text если уже знаешь извиняй, я предложил. Может еще смысл программы расскажешь чуть?Последний раз редактировалось Medic84, 11-06-2009 в 20:13 .
Сообщения: 36
Благодарности: 2у нас на работе установили программу для ввода данных
Но она понимает только большые буквы
Вот я и хотел написать программу в что бы каждый раз что я обращаюсь к окну для заполнения данных у меня включался Caps lockПроблема в том что в программе для ввода данных можно открыть много окон как в OUTLOOK
и в каждом окне можно писать данные
Пока смог написать только что бы Caps lock сробатовал в первом окне В остальных не работает Caps lockСообщения: 460
Благодарности: 152
| Конфигурация компьютера | |
| Процессор: DualCore Intel Core 2 Duo E6750, 2666 MHz | |
| Материнская плата: Asus P5K WS | |
| Память: 2 х 1024 Mb | |
| HDD: Seagate ST3500320AS (500 Gb, 7200 RPM, SATA-II), Seagate ST3320620AS (320 Gb, 7200 RPM, SATA-II), Hitachi HDS721680PLA380 (80 Gb, 7200 RPM, SATA-II) | |
| Видеокарта: NVIDIA GeForce 8600 GTS (256 Мб) | |
| Звук: Realtek ALC888/S/T @ Intel 82801IB ICH9 | |
| Монитор: ASUS VW 222U, 22" | |
| ОС: MS Windows XP Professional SP2, RUS | |
| Прочее: Клавиатура: Logitech WAVE, Мышь: Razer DeathAdder GuildWars, Ковер: Razer Mantis |
Opt('TrayIconDebug', 1) HotKeySet(' ', '_Pro_Exit'); Клавиша ESC - закрыть скрипт Global $sTitel, $hWnd, $iPID, $sFile While 1 $hWnd = WinGetHandle('[Active]') $sTitel = WinGetTitle($hWnd) $iPID = WinGetProcess($hWnd) $sFile = _ProcessGetLocation($iPID) ToolTip('Указатель окна:' & @TAB & $hWnd & @CRLF & _ 'Заголовок окна:' & @TAB & $sTitel & @CRLF & _ 'PID процесса:' & @TAB & @TAB & $iPID & @CRLF & _ 'Файл процесса:' & @TAB & @TAB & $sFile, _ 10, 100, 'Активное окно') Sleep(100) WEnd Func _ProcessGetLocation($iPID) Local $aProc = DllCall('kernel32.dll', 'hwnd', 'OpenProcess', 'int', BitOR(0x0400, 0x0010), 'int', 0, 'int', $iPID) If $aProc[0] = 0 Then Return SetError(1, 0, '') Local $vStruct = DllStructCreate('int[1024]') DllCall('psapi.dll', 'int', 'EnumProcessModules', 'hwnd', $aProc[0], 'ptr', DllStructGetPtr($vStruct), 'int', DllStructGetSize($vStruct), 'int_ptr', 0) Local $aReturn = DllCall('psapi.dll', 'int', 'GetModuleFileNameEx', 'hwnd', $aProc[0], 'int', DllStructGetData($vStruct, 1), 'str', '', 'int', 2048) If StringLen($aReturn[3]) = 0 Then Return SetError(2, 0, '') Return $aReturn[3] EndFunc Func _Pro_Exit() Exit EndFunc
Цитата shyra1976:
| у нас на работе установили программу для ввода данных Но она понимает только большые буквы Вот я и хотел написать программу в что бы каждый раз что я обращаюсь к окну для заполнения данных у меня включался Caps lock Проблема в том что в программе для ввода данных можно открыть много окон как в OUTLOOK и в каждом окне можно писать данные Пока смог написать только что бы Caps lock сробатовал в первом окне В остальных не работает Caps lock » |
могу подкинуть десяток запятых - даром ))))))))
-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?
Узнать имя процесса, которому принадлежит активное окно
Как я делаю беру хендл активного окна функцией GetForegroundWindow() , надо по этому хендлу узнать имя процесса при помощи WinAPI. Как это можно сделать?
Отслеживать
11.5k 8 8 золотых знаков 42 42 серебряных знака 69 69 бронзовых знаков
задан 15 янв 2017 в 2:11
Dolphin Scrub Dolphin Scrub
119 3 3 серебряных знака 8 8 бронзовых знаков
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Можно просто и коротко:
#include #include #include int main() < Sleep(1000); // Чтобы успеть переключиться в другое окошко :) DWORD pid; GetWindowThreadProcessId(GetForegroundWindow(),&pid); HANDLE hProc = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pid); char name[256]; if (GetProcessImageFileName(hProc,name,256)) std::cout #pragma comment(lib,"user32")
Отслеживать
ответ дан 15 янв 2017 в 6:06
218k 15 15 золотых знаков 118 118 серебряных знаков 229 229 бронзовых знаков
- Сначала получите идентификатор процесса, которому принадлежит активное окно: GetWindowThreadProcessId() .
- Затем получите описатель (дескриптор, хендл) процесса с помощью OpenProcess() . При открытии процесса достаточно указать право на PROCESS_QUERY_INFORMATION — получение ограниченной информации о процессе.
- Наконец, извлеките по описателю имя процесса: GetProcessImageFileName() . Данная функция доступна, начиная с Windows XP. Для более ранних версий ОС необходимо использовать GetModuleFilenameEx() , но тогда права доступа к процессу должны быть PROCESS_QUERY_INFORMATION | PROCESS_VM_READ .
Почему я не заменил шаги 1 и 2 на вызов функции GetProcessHandleFromHwnd() ? Дело в том, что эта функция пытается открыть процесс с избыточным набором привилегий, которых у пользователя может и не быть. К примеру, PROCESS_VM_READ (чтение чужой памяти) неприменим к процессам, запущенным не под текущим пользователем (если текущий пользователь не администратор).
#include #include #include #include std::string getForegroundWindowProcessName() < const HWND hForeground = GetForegroundWindow(); if(hForeground) < DWORD dwPID = 0; GetWindowThreadProcessId(hForeground, &dwPID); const HANDLE hProc = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, dwPID); if(hProc) < TCHAR szPath[MAX_PATH]; GetProcessImageFileName(hProc, szPath, sizeof(szPath)); CloseHandle(hProc); // Пытаемся извлечь имя файла. Если GetProcessImageFileName по каким-то // причинам предоставил не путь, а просто имя, возвращаем именно его. TCHAR szTitle[MAX_PATH]; if(GetFileTitle(szPath, szTitle, sizeof(szTitle)) == 0) return std::string(szTitle); else return std::string(szPath); >else // Ошибка при открытии процесса. За подробностями — к GetLastError() return std::string(); > else // Ни одно окно не выделено return std::string(); > int main()
AHK: Есть HWND окна, надо определить PID соответствуещего процесса.










Получается одноименное окно, с разными HWND, а процесс называется AsteriosGame.exe с разными PID, т.е. PID соответствует HWND.
А теперь, что у меня не получается.
1. Узнать какому HWND соответствует PID.
2. Узнать какой PID не имеет HWND, т.е. задача от обратного - процесс AsteriosGame.exe просто висит.
Я попытался разобраться в команде Process при Cmd=List. и запутался.
Процесс AsteriosGame.exe без окна не считается зависшим, то сильно замедляет остальные процессы AsteriosGame.exe.
Надеюсь всё правильно объяснил.
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019 Click to Download
2 Ответ от stealzy 2016-12-03 12:04:08 (изменено: stealzy, 2016-12-03 12:17:31)
- stealzy
- Разработчик
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
1. Открываем справку → работа с окнами → WinGet вроде подходит.
Дано: HWND=ID, найти: PID. И наоборот.
WinGet, LA2pid, pid, ahk_id %LA2id% WinGet, LA2id, id, ahk_pid %LA2pid%
2. В справке написано, что команда Process, List еще не реализована, но дан пример с DllCall. Думаю можно получить список PID всех процессов с вашим именем. Останется только пройтись по ним циклом и завершить все PID, не имеющие ID.
3. Думается мне, окна есть у всех процессов, просто у зависших они скрыты. Тогда:
1) Используя WinGet, IDs, List, ahk_exe myName получаете список ID видимых окон.
2) Включаете DetectHiddenWindows On и теперь получаете список всех окон.
3) Находите ID, который есть во втором списке, но нет в первом, и прибиваете его.
4) PROFIT!
3 Ответ от teadrinker 2016-12-03 12:09:02
- teadrinker
- Администратор
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Indomito, не создавайте темы по играм в ветке Autohotkey.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
4 Ответ от Indomito 2016-12-03 23:52:10 (изменено: Indomito, 2016-12-03 23:54:59)










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
teadrinker
Я просто с этой задачей сталкивался часто. но актуальной она стала в LA2 и на конкретном сервере.
Посчитал что она имеет к играм такое же значение, что и не имеет.
Перенести в игры?
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019 Click to Download
5 Ответ от teadrinker 2016-12-04 00:43:33
- teadrinker
- Администратор
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Indomito, если делается для игры, значит должно быть в ветке для игр.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
6 Ответ от Indomito 2016-12-04 00:49:55 (изменено: Indomito, 2016-12-04 01:02:52)










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019 Click to Download
7 Ответ от Indomito 2016-12-04 01:02:14 (изменено: Indomito, 2016-12-04 01:04:30)










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
stealzy
WinGet, LA2pid, pid, ahk_id %LA2id% WinGet, LA2id, id, ahk_pid %LA2pid%
Твой код не работает без указания имени окна и писать ahk_id и ahk_pid не обязательно, достаточно указать имя окна, но имена окон одинаковые - вот в чём засада.
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019 Click to Download
8 Ответ от Malcev 2016-12-04 11:16:37
- Malcev
- Разработчик
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Winget, List, List, Untitled - Notepad loop % list
9 Ответ от Malcev 2016-12-04 12:26:26
- Malcev
- Разработчик
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
teadrinker пишет:
Indomito, если делается для игры, значит должно быть в ветке для игр.
Я считаю, что это не совсем верная формулировка.
А вот в правилах как-раз таки верная:
Если Ваш вопрос касается автоматизации игр, задавайте его в соответствующей ветке, не создавайте тему здесь.
Так как данный вопрос не касается автоматизации конкретной игры, то и находиться ему следует в ветке по AHK.
Так было бы правильнее для последующих подобных вопросов, не касающихся игр.
10 Ответ от teadrinker 2016-12-04 13:10:35
- teadrinker
- Администратор
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Не совсем тебя понял. Если скрипт делается для игры (AsteriosGame.exe), значит он касается автоматизации игр. Считаю, что подобные вопросы обязательно должны быть в этой ветке, во-первых, из-за специфики взаимодействия скриптов и игр, во-вторых, из-за специфики здешнего контингента (не относится к ТС) — «я полный нуб, сделайте мне так-то и так-то».
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
11 Ответ от Malcev 2016-12-04 13:21:13
- Malcev
- Разработчик
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Согласен с тобой.
Но в данном конкретном случае, кроме названия игры в имени процесса ничего больше связанного с играми нету.
А сам вопрос касается перечисления процессов.
Что может пригодится в последующих поисковых запросах пользователей в ветке по автохотки.
12 Ответ от teadrinker 2016-12-04 17:20:45
- teadrinker
- Администратор
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
может пригодится в последующих поисковых запросах пользователей в ветке по автохотки
Так можно практически про любую тему из ahk-games сказать. Но разве точно так же не может пригодиться и здешним пользователям?
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
13 Ответ от Malcev 2016-12-04 18:30:48
- Malcev
- Разработчик
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Так можно практически про любую тему из ahk-games сказать
Ну тут уже сам топикстартер решает, где запостить свою тему.
И если она касается автоматизации игр, то такую тему конечно же не следует постить в ветке по автохотки.
Но разве точно так же не может пригодиться и здешним пользователям?
Может, конечно. Я просто не вижу объективной причины для переноса темы.
Например, если меня интересуют скрипты по игре AsteriosGame, и мне поиск выдаст эту тему, то она мне вряд ли пригодится, так как обсуждается общий вопрос.
14 Ответ от teadrinker 2016-12-04 19:11:11
- teadrinker
- Администратор
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Malcev пишет:
Ну тут уже сам топикстартер решает, где запостить свою тему.
Да нет, не думаю, что на это у посетителей этого раздела хватит компетенции.
Malcev пишет:
Я просто не вижу объективной причины для переноса темы.
Ну, просто так решили: скрипт требуется для игры — значит, должен быть здесь.
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder
15 Ответ от Indomito 2016-12-05 01:34:20










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Malcev
Этот код работает.
Winget, List, List, Безымянный — Блокнот loop % list
А как найти процессы без активного окна?
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019 Click to Download
16 Ответ от Flasher 2016-12-05 03:46:45
- Flasher
- Заблокирован
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Indomito
Неактивное окно - это то, которое не выставлено на передний план. Скрипт с таким прекрасно работает.
Ежели речь о скрытом окне (максимум есть значок в области уведомлений), то выше уже писали:
stealzy пишет:
2) Включаете DetectHiddenWindows On и теперь получаете список всех окон.
17 Ответ от Indomito 2016-12-05 05:54:20 (изменено: Indomito, 2016-12-05 06:04:02)










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Flasher
Проблема в том, придётся перебрать кучу окон основываясь на алгоритме.
stealzy пишет:
3. Думается мне, окна есть у всех процессов, просто у зависших они скрыты. Тогда:
1) Используя WinGet, IDs, List, ahk_exe myName получаете список ID видимых окон.
2) Включаете DetectHiddenWindows On и теперь получаете список всех окон.
3) Находите ID, который есть во втором списке, но нет в первом, и прибиваете его.
4) PROFIT!
И так получаем вот такой скрипт.
DetectHiddenWindows Off Winget, List, List , Безымянный — Блокнот loop % list < WinGet, Pid, Pid, % "ahk_id " list%A_Index% msgbox % Pid ;PID >DetectHiddenWindows On Winget, List, List ;, Безымянный — Блокнот loop % list
1. Я не убью ничего лишнего?
2. Может проверять по ID, или есть более простой метод?
Проверку не писал - это просто.
P.S. У NotePad только одно окно, сколько у меня - не знаю и процесс не зависший.
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019 Click to Download
18 Ответ от Flasher 2016-12-05 06:39:39
- Flasher
- Заблокирован
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Indomito
Тут не надо комментировать заголовок:
Winget, List, List ;, Безымянный — Блокнот
Все окна искать не надо, только с заданным заголовком или лучше классом:
Winget, List, List, ahk_class Notepad
19 Ответ от Indomito 2016-12-05 07:42:42 (изменено: Indomito, 2016-12-05 08:04:45)










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Flasher
Да, получается проще.
DetectHiddenWindows, On Winget, List, List, ahk_class Notepad loop % list
А если нет окна, то закрываем процесс по PID?
Может и не стоит писать DetectHiddenWindows, On?
Я уж хотел писать Winget, List, List, ahk_class Default IME.
MSCTFIME UI - пользовательский интерфейс к редактору метода ввода.
Default IME нужен, чтобы, например, писать на японском, корейском языках в операционной системе, т.е. на нестандартной знаковой системе.
Они всегда есть, ну почти, а там где требуется что либо писать - обязательно
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019 Click to Download
20 Ответ от Flasher 2016-12-05 08:28:15 (изменено: Flasher, 2016-12-05 08:32:16)
- Flasher
- Заблокирован
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Indomito пишет:
А если нет окна, то закрываем процесс по PID?
Может и не стоит писать DetectHiddenWindows, On?
Winget, List, List, ahk_class Notepad DetectHiddenWindows, On Winget, Hidd, List, ahk_class Notepad loop % Hidd
21 Ответ от Indomito 2016-12-05 08:28:59










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Flasher
Работает только на блокноте.
Так не работает.
Winget, List, List, ahk_class Asterios
Winget, List, List, ahk_class MSCTFIME UI
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019 Click to Download
22 Ответ от Flasher 2016-12-05 08:31:53
- Flasher
- Заблокирован
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Indomito пишет:
А точно класс "Asterios"?
23 Ответ от Indomito 2016-12-05 08:37:07










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Flasher
Чем смотреть класс?
В реестре?
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019 Click to Download
24 Ответ от Flasher 2016-12-05 08:45:03
- Flasher
- Заблокирован
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Indomito
Нет, конечно. Полно чем. Например, этим или этим.
25 Ответ от Indomito 2016-12-05 08:53:43










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Flasher
Сейчас проверю - у меня была утилита WinSight, но кудато пропала.
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019 Click to Download
26 Ответ от Indomito 2016-12-05 09:07:46 (изменено: Indomito, 2016-12-05 09:21:03)










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Flasher
▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪ ( Window: Class & ProcessName & HWND )
ahk_class 353677648몽匢�凫슜纾̓囿彣椱껶≊웒嵤ᰘ㢩神Քൣ ahk_exe AsteriosGame.exe ahk_id 0x205a2

Да, уж легче не стало - это точно.
Может как то извратится и через MSCTFIME UI, только надо узнать у какого класса MSCTFIME UI нет окна Asterios Phoenix.
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019 Click to Download
27 Ответ от stealzy 2016-12-05 19:01:26
- stealzy
- Разработчик
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
visibleWinPIDs:=[], allWinPIDs:=[], Pids:=[] exeName := "calc.exe", n:=5 Loop % n < Run % exeName. Pid Pids.Push(Pid) Sleep 100 >MsgBox Запущено %n% процессов %exeName% WinHide % "ahk_pid" Pids[2] WinHide % "ahk_pid" Pids[4] MsgBox Скрыты окна 2 и 4 процессов,`nПодсчитайте кол-во процессов %exeName% в диспетчере и закройте его. RunWait taskmgr.exe ; список PID видимых Winget, list, List, ahk_exe %exeName% loop % list < WinGet, Pid, Pid, % "ahk_id " list%A_Index% If !indexOf(Pid, visibleWinPIDs) ; У процесса может быть много окон. Записываем только те процессы, которых еще нет в списке. visibleWinPIDs.Push(Pid) >; список PID всех DetectHiddenWindows On Winget, list, List, ahk_exe %exeName% loop % list < WinGet, Pid, Pid, % "ahk_id " list%A_Index% If !indexOf(Pid, allWinPIDs) allWinPIDs.Push(Pid) >MsgBox % "Процессов с видимыми окнами: " visibleWinPIDs.MaxIndex() "`nПроцессов с окнами: " allWinPIDs.MaxIndex() "`nПроцессы без видимых окон закрыты." ; убийства If ( visibleWinPIDs.MaxIndex() != allWinPIDs.MaxIndex() ) Loop % allWinPIDs.MaxIndex() < If !indexOf(allWinPIDs[A_Index], visibleWinPIDs) ; Убиваем те процессы из первого списка, которых нет во втором. Process Close, % allWinPIDs[A_Index] >RunWait taskmgr.exe WinClose % "ahk_pid" Pids[1] WinClose % "ahk_pid" Pids[3] WinClose % "ahk_pid" Pids[5] Exit Return indexOf(var, Arr, fromIndex:=1) < for index, value in Arr < if (index < fromIndex) Continue else if (value = var) return index >return false >
28 Ответ от Malcev 2016-12-05 19:07:48 (изменено: Malcev, 2016-12-05 19:10:50)
- Malcev
- Разработчик
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
По-моему подход неверный.
Так как если окно невидимо - не значит, что программа зависла.
Да и у процесса может быть несколько окон, некоторые из которых скрытые.
Я бы посылал сообщение окну и дожидался ответа.
Если ответа нету - значит закрываем.
#Persistent Menu, Tray, Icon, User32.dll, 2 SMTO_NOTIMEOUTIFNOTHUNG := 8 Delay = 200 SetTimer, CheckAllWindows, 10 Return CheckAllWindows: SetTimer, CheckAllWindows, Off WinGet, hWnd, List Loop, %hWnd% < ID := hwnd%A_Index% DllCall("SendMessageTimeout", UInt,ID, UInt, 0, Int,0, Int,0 , UInt, SMTO_NOTIMEOUTIFNOTHUNG, Int,3, "UInt *", Result ) WinGetTitle, Title, ahk_id %ID% IfNotEqual,Result,0, GoSub,Alert Sleep %Delay% >SetTimer, CheckAllWindows, %Delay% Return Alert: ; This routine can be used to repeat testing & offer a WinKill. MsgBox,64,Alert: Window probably hung. Window Title: %Title%, 3 Return
29 Ответ от stealzy 2016-12-05 19:10:22 (изменено: stealzy, 2016-12-05 19:14:36)
- stealzy
- Разработчик
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Мопед не мой, ТЗ поставлено ТС.
Интересно, как ваш код отработает с DetectHiddenWindows On?
В текущем виде он ТС не поможет (см. 1 сообщение).
30 Ответ от Malcev 2016-12-05 19:13:31 (изменено: Malcev, 2016-12-05 19:15:16)
- Malcev
- Разработчик
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Тогда уж проще так:
WS_VISIBLE := 0x10000000 DetectHiddenWindows On Winget, List, List, ahk_exe notepad.exe loop % list
31 Ответ от stealzy 2016-12-05 19:17:27 (изменено: stealzy, 2016-12-05 19:20:12)
- stealzy
- Разработчик
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Ок, но мне часто встречаются программы, имеющие несколько окон, некоторые причем обычно невидимы.
Ваш код, очевидно, закроет их всех.
Мой код закрывает только те процессы, у которых нет видимых окон (но есть невидимые, как получить список PID по имени процесса я не знаю).
32 Ответ от Malcev 2016-12-05 19:31:09 (изменено: Malcev, 2016-12-06 00:32:15)
- Malcev
- Разработчик
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
DetectHiddenWindows On Winget, List, List, ahk_exe notepad.exe loop % list < if IsHungAppWindow(list%A_Index%) WinClose, % "ahk_id " list%A_Index% >return IsHungAppWindow(hwnd)
как получить список PID по имени процесса я не знаю
33 Ответ от Flasher 2016-12-05 21:26:06
- Flasher
- Заблокирован
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Malcev пишет:
if (Style & WS_VISIBLE) Continue
А чем Continue лучше "!"?
34 Ответ от Malcev 2016-12-05 21:31:08
- Malcev
- Разработчик
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
35 Ответ от Indomito 2016-12-05 22:40:04 (изменено: Indomito, 2016-12-05 22:45:11)










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.

Так. я запутался если честно.
Можно хоть один рабочий пример?
Для моего случая. всё не работает с данной версией LAII.
P.S. ТЗ от ТС - перепишу и упрощу..
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019 Click to Download
36 Ответ от Malcev 2016-12-06 00:13:19
- Malcev
- Разработчик
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
А код из 34 поста не работает?
37 Ответ от Indomito 2016-12-06 00:18:05 (изменено: Indomito, 2016-12-06 00:23:28)










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Malcev пишет:
А код из 34 поста не работает?
Не проверял, просто занят. сорри.
Можно добавить комментарии(минимальные), я его до конца не понимаю, а?
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019 Click to Download
38 Ответ от Malcev 2016-12-06 06:03:52
- Malcev
- Разработчик
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
for process in ComObjGet("winmgmts:").InstancesOf("Win32_Process where Name='notepad.exe'")
39 Ответ от Flasher 2016-12-06 06:53:48
- Flasher
- Заблокирован
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
stealzy пишет:
Ок, но мне часто встречаются программы, имеющие несколько окон, некоторые причем обычно невидимы.
Ваш код, очевидно, закроет их всех.
А если всё-таки ahk_class брать, а не ahk_exe? Класс основного окна с дочерними вряд ли совпадает.
40 Ответ от stealzy 2016-12-06 23:46:29
- stealzy
- Разработчик
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
41 Ответ от Flasher 2016-12-07 16:23:03
- Flasher
- Заблокирован
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
С юникодным интерпретатором и .ahk в UTF-16 работает?
stealzy пишет:
Вот этого только не надо. Напишите по-русски.
42 Ответ от Indomito 2016-12-08 04:29:44 (изменено: Indomito, 2016-12-08 05:24:47)










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Flasher пишет:
Видимо ahk_class зашифрован - это и в UTF-8 и UTF-16.
Обфускация точки входа (OEP) Themida прячет точку входа в библиотеку или приложение. Шифрование ресурсов. Если в ваше приложение включены какие-либо ресурсы (иконки, файлы и так далее), они будут зашифрованы и расшифрованы только при обращении к ним.
C Themida я и воюю.
Post's attachments
2.png
2.png 17.11 kb, file has never been downloaded.
You don't have the permssions to download the attachments of this post.
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019 Click to Download
43 Ответ от Indomito 2016-12-08 04:48:39 (изменено: Indomito, 2016-12-08 05:24:10)










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019 Click to Download
44 Ответ от Indomito 2016-12-08 04:55:57 (изменено: Indomito, 2016-12-08 04:57:46)










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Malcev пишет:
А код из 34 поста не работает?
Твой код не закрывает Блокнот.
F1:: DetectHiddenWindows On Winget, List, List, ahk_exe notepad.exe loop % list < if IsHungAppWindow(list%A_Index%) WinClose, % "ahk_id " list%A_Index% >return IsHungAppWindow(hwnd)
Есть ещё предложения, просто ни один код не срабатыват.
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019 Click to Download
45 Ответ от Malcev 2016-12-08 10:24:06
- Malcev
- Разработчик
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Из 34 поста код закрывает блокнот, только если система посчитает, что блокнот завис.
Из 40 поста код закроет все процессы блокнота у которых нет видимых окон.
46 Ответ от Flasher 2016-12-08 10:54:30
- Flasher
- Заблокирован
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Indomito пишет:
Видимо ahk_class зашифрован - это и в UTF-8 и UTF-16.
ahk_class в код #32 вместо ahk_exe notepad.exe подставлялся? Какой результат?
47 Ответ от Indomito 2016-12-09 04:52:05










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Malcev пишет:
1. Из 34 поста код закрывает блокнот, только если система посчитает, что блокнот завис.
2. Из 40 поста код закроет все процессы блокнота у которых нет видимых окон.
1. У меня LAII - не зависает, а просто идёт утечка памяти - у него просто нет основного окна Asterios Phoenix.
2. Видимые окна есть, только нет основного окна Asterios Phoenix
Пост №34. Просто не срабатывает.
Пост №40. Не срабатывает, т.к. видимые окна есть.
Flasher пишет:
ahk_class в код #32 вместо ahk_exe notepad.exe подставлялся? Какой результат?
надо проверить. сейчас.
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019 Click to Download
48 Ответ от Indomito 2016-12-09 05:19:19 (изменено: Indomito, 2016-12-09 05:36:03)










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Flasher
Твой код закрывает все окна кроме Безымянный — Блокнот и процесса notepad.exe, т.е. работает как написано.
F1:: WS_VISIBLE := 0x10000000 DetectHiddenWindows On Winget, List, List, ahk_exe notepad.exe loop % list < WinGet, Style, Style, % "ahk_id " list%A_Index% if (Style & WS_VISIBLE) Continue WinClose, % "ahk_id " list%A_Index% >Return
Мне нужно убить процесс(ы) notepad.exe без окна Безымянный — Блокнот.
А процесс(ы) notepad.exe с окном Безымянный — Блокнот - не трогать.

P.S. Я проверил это на LAII и язык стал у окна стал родной (корейский язык ввода) .
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019 Click to Download
49 Ответ от Flasher 2016-12-09 05:54:51
- Flasher
- Заблокирован
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Indomito
Это не мой код. Это код Malcevа. Я предложил использовать класс.
А здесь я вижу чистый копипаст (причём с обсуждаемой программой). О чём речь вообще?
Indomito пишет:

P.S. Я проверил это на LAII и язык стал у окна стал родной (корейский язык ввода) .

Не понял. Что проверил, и как вообще данный код может влиять на язык программы?
50 Ответ от Indomito 2016-12-09 05:58:20 (изменено: Indomito, 2016-12-09 06:17:15)










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Flasher
Он убивает языковые окна.
Хотя по сути не важно, мне нужно убить процесс(ы) без основного окна.
Я попытался модифицировать код - ничего не получилось.
F1:: WS_VISIBLE := 0x10000000 ;DetectHiddenWindows On Winget, List, List, ahk_exe notepad.exe loop % list < WinGetTitle, this_title, % "ahk_id " list%A_Index% If (this_title="Безымянный — Блокнот") Break MsgBox %this_title% WinGet, Style, Style, % "ahk_id " list%A_Index% if (Style & WS_VISIBLE) Continue WinClose, % "ahk_id " list%A_Index% >Return
Надо использовать массив:
- Основное окно
- Процесс
А потом убивать процессы без основного окна, не окна, процесс - по сути то всё просто.
P.S. К играм отношение косвенное.
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019 Click to Download
51 Ответ от Flasher 2016-12-09 06:08:11
- Flasher
- Заблокирован
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Indomito
Я не понимаю, о чём речь. Я не пользуюсь программой (игрой или что там).
52 Ответ от Indomito 2016-12-09 06:13:32










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Flasher
Я исправил пост - задача то тривиальная.
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019 Click to Download
53 Ответ от Flasher 2016-12-09 06:16:57
- Flasher
- Заблокирован
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Indomito пишет:
Где в скрипте использование класса, о котором я писал?
54 Ответ от Indomito 2016-12-09 06:23:12 (изменено: Indomito, 2016-12-09 06:49:45)










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Flasher
В моём случае подстановка ahk_class не срабатывает.
Winget, List, List, ahk_class notepad.exe
Это только для блокнота, но не для LAII.
Я понял алгоритм, и он достаточно простой.
Шаг №1. В массив заносим процессы.
Winget, List, List, ahk_exe notepad.exe loop % list
Шаг №2. В массив заносим окна.
SetTitleMatchMode, 3 WinGet, List, list,Безымянный — Блокнот loop % list
Шаг №3. Процессы notepad.exe без окна Безымянный — Блокнот - убиваем
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019 Click to Download
55 Ответ от Flasher 2016-12-09 06:45:23 (изменено: Flasher, 2016-12-09 06:47:20)
- Flasher
- Заблокирован
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Indomito пишет:
В моём случае подстановка ahk_class не срабатывает.
Это условие выполнено?:
Flasher пишет:
С юникодным интерпретатором и .ahk в UTF-16
Речь идёт только об указанной мной правке, без ..title.
56 Ответ от Indomito 2016-12-09 06:55:47 (изменено: Indomito, 2016-12-09 07:03:46)










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Flasher пишет:
Flasher пишет:
С юникодным интерпретатором и .ahk в UTF-16
Нет, в NotePad++ только UTF-8.
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019 Click to Download
57 Ответ от Flasher 2016-12-09 07:23:31
- Flasher
- Заблокирован
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Indomito пишет:
Это неправда (знаю, хоть и не пользуюсь). Впрочем, никто не отменял блокнот (Юникод - это UTF-16).
58 Ответ от Indomito 2016-12-09 07:27:47










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Flasher
У мне только это.
Post's attachments
1.png
1.png 10.13 kb, file has never been downloaded.
You don't have the permssions to download the attachments of this post.
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019 Click to Download
59 Ответ от Flasher 2016-12-09 07:35:48
- Flasher
- Заблокирован
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Indomito
UCS-2 - то же самое.
60 Ответ от Indomito 2016-12-09 07:38:25 (изменено: Indomito, 2016-12-09 07:39:21)










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Flasher пишет:
А какую оптимально использовать? Их там две.
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019 Click to Download
61 Ответ от Flasher 2016-12-09 07:41:38
- Flasher
- Заблокирован
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
62 Ответ от Indomito 2016-12-09 07:46:19










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Flasher пишет:
Ещё вопросик. сек напишу.
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019 Click to Download
63 Ответ от Indomito 2016-12-09 07:58:25










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Flasher
Что я не верно написал?
F1:: ;DetectHiddenWindows On ;SetTitleMatchMode, 3 Winget, List, List, ahk_exe notepad.exe loop % list < WinGetTitle, this_title, % "ahk_id " list%A_Index% WinGetTitle, this_PID, % "AHK_pid " list%A_Index% MsgBox %this_title% = %this_PID% >Return F2:: exitapp
Или PID нельзя получить таким способом?
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019 Click to Download
64 Ответ от Flasher 2016-12-09 08:23:32
- Flasher
- Заблокирован
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Indomito
Неверно в отношении чего? PID как к делу относится? Имя процесса и PID - два поля ягоды.
WinGetTitle никак PID не возвращает. Это делается через WinGet, выше примеры приводились.
list%A_Index% в данном коде - это дескриптор окна, поэтому с AHK_pid оно никак не может рядом стоять.
65 Ответ от Malcev 2016-12-09 16:43:05
- Malcev
- Разработчик
- Неактивен










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Indomito, у вас сам подход к поставленной задаче неверный.
for process in ComObjGet("winmgmts:").InstancesOf("Win32_Process where Name='notepad.exe'") < Winget, List, List, % "ahk_pid " process.ProcessId loop % list < WinGetTitle, title, % "ahk_id " list%A_Index% if (title = "Asterios Phoenix") Continue 2 >process.Terminate >
66 Ответ от Indomito 2016-12-12 21:21:58










Re: AHK: Есть HWND окна, надо определить PID соответствуещего процесса.
Flasher, Malcev и другие. Спасибо, я решил задачу свою.
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019 Click to Download
Сообщения 66
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
