win32gui.SetActiveWindow()错误:找不到指定的过程

Wis*_*ise 5 python win32gui

我像这样得到活动窗口:

window = win32gui.GetForegroundWindow()
Run Code Online (Sandbox Code Playgroud)

这是一个Int,比如1053634.然后我尝试将前景窗口设置回指定的窗口:

win32gui.SetForegroundWindow(window)
Run Code Online (Sandbox Code Playgroud)

我收到此错误:win32gui.SetForegroundWindow(window)错误:(127,'SetForegroundWindow','无法找到指定的过程.')

有时当我在解释器中执行此操作时,我收到此错误:

win32gui.SetForegroundWindow(1053634)
error: (0, 'SetForegroundWindow', 'No error message is available')
Run Code Online (Sandbox Code Playgroud)

您认为这个问题是什么?

谢谢!

小智 16

我的程序在Windows 7的桌面上工作正常,但当我在Windows Vista中使用笔记本电脑时(即使关闭了UAC),我收到错误:

pywintypes.error: (0, 'SetForegroundWindow', 'No error message is available')
Run Code Online (Sandbox Code Playgroud)

程序将在任务栏中闪烁,但不会发送任何字符.

我甚至尝试发送'notepad'SetForegroundWindow并得到同样的错误.

以下是一个解决方法的链接,它结合了线程以使计算机认为它们协同工作:http://www.shloemi.com/2012/09/solved-setforegroundwindow-win32-api-not-always-works/

本文提供了有关该问题的更多信息.

更新:很抱歉该链接转到了C程序.我研究了一些,发现它会让你SetForegroundWindow,如果你先发送一个alt键.

例如:

import win32gui, win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
shell.SendKeys('%')
win32gui.SetForegroundWindow(window)
Run Code Online (Sandbox Code Playgroud)

  • @HuiGordon 从字面上看,它所做的就是发送左 alt 键。由于某种原因,Windows 确实希望您在将任何其他窗口置于前台之前按 Alt 键。不确定这是一个错误还是微软的意图,也许他们希望人们只能使用 Alt + Tab 或其他将窗口带到前面的操作。 (3认同)