我使用下面的代码来确定前景窗口,并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()