我像这样得到活动窗口:
window = win32gui.GetForegroundWindow()
这是一个Int,比如说1053634。 然后我尝试将前景窗口设置回指定的窗口:
win32gui.SetForegroundWindow(window)
我收到此错误: win32gui.SetForegroundWindow(窗口) 错误:(127,'SetForegroundWindow','无法找到指定的过程。')
有时当我在解释器中执行此操作时,我收到此错误:
win32gui.SetForegroundWindow(1053634)
error: (0, 'SetForegroundWindow', 'No error message is available')
您认为这是什么问题?
谢谢!
答案 0 :(得分:13)
我的程序在Windows 7的桌面上运行正常,但是当我在Windows Vista上使用笔记本电脑时 (即使UAC关闭),我收到错误:
pywintypes.error: (0, 'SetForegroundWindow', 'No error message is available')
程序将在任务栏中闪烁,但不会发送任何字符。
我甚至尝试发送'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)
答案 1 :(得分:2)
这对我也有用
import win32gui, win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
shell.SendKeys('%')
win32gui.SetForegroundWindow(window.hwnd)
答案 2 :(得分:0)
什么对我有用...
import win32gui, win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
input("Press Enter")
shell.SendKeys(' ') #Undocks my focus from Python IDLE
win32gui.SetForegroundWindow(window) #It works!
shell.SendKeys('%')