2011-12-17 234 views
2

所以,我想在Python中使用pywin32模块编写一个简单的时间跟踪器。它正常工作的大部分时间,但在某些情况下,它显示了以下错误之一:python pywin32访问被拒绝

(5, 'OpenProcess', 'Access is Denied.') 
(87, 'OpenProcess', 'The Parameter is incorrect.)' 

的问题最小化窗口或者运行全屏应用程序时,通常会出现这样的游戏。

以管理员身份运行脚本不会有帮助。这是我试图做到这一点:

windowName = win32gui.GetForegroundWindow() 
t, p = win32process.GetWindowThreadProcessId(windowName) 
handle = win32api.OpenProcess(0x0410, False, p) 
windowPath = win32process.GetModuleFileNameEx(handle, 0) 

有什么办法解决这个问题?

+2

你肯定回来`windowName,T,p`是正确的?检查GetForegroundWindow是否不返回None。 – Zuljin 2011-12-17 11:13:42

回答

1

首先您是否需要0x0410权限(PROCESS_VM_READ + PROCESS_QUERY_INFORMATION)?也许获得PROCESS_QUERY_INFORMATION或PROCESS_QUERY_LIMITED_INFORMATION足够满足您的需求?检查此MSDN页面的权限描述http://msdn.microsoft.com/en-us/library/windows/desktop/ms684880(v=vs.85).aspx

如果仍然失败,您可以尝试使用SeDebugPrivilege为您的进程添加调试权限,并且应该打开您想要的任何进程。检查这些链接,了解更多信息: