在Python中发现所有窗口的exepath

我使用下面的代码来确定前景窗口,并find创build它的.exe文件的path。

hwnd = win32gui.GetForegroundWindow() _, pid = win32process.GetWindowThreadProcessId(hwnd) hndl = win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION | win32con.PROCESS_VM_READ, 0, pid) path = win32process.GetModuleFileNameEx(hndl, 0) print path 

这适用于Windows,如谷歌浏览器,PyCharm,Filezilla等,但行

 path = win32process.GetModuleFileNameEx(hndl, 0) 

正在抛出错误

 pywintypes.error: (299, 'GetModuleFileNameEx', 'Only part of a ReadProcessMemory or WriteProcessMemory request was completed.') 

为Windows资源pipe理器,计算器,命令提示符等

我相对较新的编码和python,不能找出为什么是这样的情况,是什么区别。

该错误表示您正在64位Windows上的WOW64仿真器中执行32位代码,并尝试获取有关64位进程的信息。

要通过这个你应该切换到运行64位代码。 所以,你需要64位的Python。

您可以使用psutil模块来获取路径。

 hwnd = win32gui.GetForegroundWindow() _, pid = win32process.GetWindowThreadProcessId(hwnd) path = psutil.Process(pid).exe()