1 (изменено: ????????????, 2021-12-01 15:12:29)

Тема: AHK: Определение PID фоновых процессов с одинаковым именем

Приветствую.
Подскажите пожалуйста, как можно определить все PID-ы фоновых процессов,  если у них одинаковые имена.
не нашел подходящего параметра в документации, так же в документации приводится примеры с использованием dll, но я не понял как там выдернуть PIDы

	
	Process, Exist, SomeProcess.exe
	pid = %ErrorLevel%
	msgbox, %pid%

2

Re: AHK: Определение PID фоновых процессов с одинаковым именем

Можно так:

PIDs := EnumProcessesByName("msedge.exe")
for k, pid in PIDs
   str .= pid . "`n"
MsgBox, % str

EnumProcessesByName(searchName, regEx := false) {
   if !DllCall("Wtsapi32\WTSEnumerateProcesses", "Ptr", 0, "UInt", 0, "UInt", 1, "PtrP", pProcessInfo, "UIntP", count)
      throw "WTSEnumerateProcesses failed, error " . A_LastError
   
   addr := pProcessInfo, PIDs := []
   Loop % count  {
      procName := StrGet( NumGet(addr + 8) )
      if ( regEx && RegExMatch(procName, searchName) ) || (procName = searchName)
         PID := NumGet(addr + 4, "UInt"), PIDs.Push(PID)
      addr += 8 + A_PtrSize*2
   }
   DllCall("Wtsapi32\WTSFreeMemory", "Ptr", pProcessInfo)
   Return PIDs
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Определение PID фоновых процессов с одинаковым именем

teadrinker
Ну это то что нужно без смс и регистраций. Огромное спасибо.