#Requires AutoHotkey v2.0

MsgBox FindProcessByExePath("C:\Windows\explorer.exe")

FindProcessByExePath(exePath, max := 300) {  ; By Tebayaki
  buf := Buffer(max * 4)
  DllCall("psapi\EnumProcesses", "ptr", buf, "uint", buf.Size, "uint*", 0)
  VarSetStrCapacity(&found, 261)
  while A_Index < max && pid := NumGet(buf, A_Index * 4, "uint") {
    if h := DllCall("OpenProcess", "uint", 0x410, "int", false, "uint", pid, "ptr") {
      DllCall("psapi\GetModuleFileNameExW", "ptr", h, "ptr", 0, "str", found, "uint", 261)
      DllCall("CloseHandle", "ptr", h)
      if found = exePath
        return pid
    }
  }
  return 0
}

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。