Python pywin32 SetFocus导致';访问被拒绝';错误

Python pywin32 SetFocus导致';访问被拒绝';错误,python,windows,pywin32,Python,Windows,Pywin32,我正在创建一个脚本,将鼠标输入发送到特定窗口。我找到的唯一方法是将焦点设置到窗口。如果有其他方法,请解释。 无论如何,这是不起作用的代码 从win32gui导入* us_ip=输入(‘Minecraft版本:’) minecraft_handle=FindWindow(无,f'minecraft{us_ip}) 设置焦点(minecraft_手柄) 我可以检索HWND,但是当我运行该程序时,我得到了这个错误 Traceback (most recent call last): File &

我正在创建一个脚本,将鼠标输入发送到特定窗口。我找到的唯一方法是将焦点设置到窗口。如果有其他方法,请解释。 无论如何,这是不起作用的代码

从win32gui导入*
us_ip=输入(‘Minecraft版本:’)
minecraft_handle=FindWindow(无,f'minecraft{us_ip})
设置焦点(minecraft_手柄)
我可以检索HWND,但是当我运行该程序时,我得到了这个错误

Traceback (most recent call last):
  File "c:\Users\Jacob Daniels\Desktop\python\autoclicker\windows api experimentation\py.py", line 5, in <module>
    SetFocus(minecraft_handle)
pywintypes.error: (5, 'SetFocus', 'Access is denied.')
回溯(最近一次呼叫最后一次):
文件“c:\Users\Jacob Daniels\Desktop\python\autoclicker\windows api实验\py.py”,第5行,在
设置焦点(minecraft_手柄)
pywintypes.error:(5,“设置焦点”,“访问被拒绝”。)
任何帮助都将不胜感激。 图书馆文件: 编辑:根据(强调是我的)发布了错误的错误消息:

将键盘焦点设置为指定的窗口窗口必须附加到调用线程的消息队列

通过使用,线程可以将其输入处理附加到另一个线程这允许线程调用SetFocus将键盘焦点设置为附加到另一线程消息队列的窗口

显然,“远程”窗口没有连接到Python脚本(主)线程,因此需要注意(需要做一些额外的工作)

代码00.py:

#/usr/bin/env python
导入系统
将win32gui导入为wgui
将win32process作为wproc导入
将win32api作为wapi导入
def主(*argv):
如果不是argv:
窗口名称=输入(“输入窗口名称:”)
其他:
窗口名称=argv[0]
handle=wgui.FindWindow(无,窗口名称)
打印(“窗口`{0:s}`句柄:0x{1:016X}”。格式(窗口名称,句柄))
如果不处理:
打印(“无效窗口句柄”)
返回
远程线程,线程=wproc.GetWindowThreadProcessId(句柄)
wproc.AttachThreadInput(wapi.GetCurrentThreadId(),远程线程,True)
prev_handle=wgui.SetFocus(句柄)
如果名称=“\uuuuu main\uuuuuuuu”:
打印(“Python{0:s}{1:d}位在{2:s}\n.format(“.join(sys.version.split(“\n”)中的项的item.strip()),如果sys.maxsize>0x100000000,则为64,否则为32,sys.platform))
main(*sys.argv[1:])
打印(“\n完成”)
输出

[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q062649124]>“e:\Work\Dev\VEnvs\py\u pc064\u 03.07.06\u test0\Scripts\python.exe”code00.py“无标题-记事本”
win32上的Python 3.7.6(tags/v3.7.6:43364a7ae0,2019年12月19日,00:42:30)[MSC v.1916 64位(AMD64)]64位
窗口“无标题-记事本”句柄:0x0000000004A520AA
完成。

不用说,记事本窗口弹出在Cmd终端前面
请注意,对于某些窗口,它可能无法工作。

在设置焦点之前,请尝试
打印(minecraft_handle)
。@CristiFati感谢您的响应。我这样做了,把手像预期的那样匹配。对不起,我出差了,刚回来。这个问题仍然悬而未决。@firebanner64:这回答了你的问题吗?如果是,请接受答案,以便其他人也能够承认()。如果没有,请告诉我如何改进,这样它就可以回答问题了。谢谢你的回答,我在浏览网站之前没有收到通知。不幸的是,我一直在做作业,没有机会尝试。但是,在看了API之后,我意识到了我的错误。即使你的特定解决方案不起作用,我也能自己解决。(但我相信它会:)注意,你应该只接受一个答案,一旦它解决了你的问题。我不是想用我的评论来给你施加压力,但有时在他们的问题解决后,人们会忘记这一步(这不是你的情况)。