12

我得到这样的活动窗口:

window = win32gui.GetForegroundWindow()

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

win32gui.SetForegroundWindow(window)

我得到这个错误:win32gui.SetForegroundWindow(window) 错误:(127, 'SetForegroundWindow', '找不到指定的过程。')

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

win32gui.SetForegroundWindow(1053634)
error: (0, 'SetForegroundWindow', 'No error message is available')

你认为是什么问题?

谢谢!

4

3 回答 3

28

我的程序在装有 Windows 7 的桌面上运行良好,但是当我在装有 Windows Vista 的笔记本电脑上使用时(即使 UAC 关闭),我收到错误消息:

pywintypes.error: (0, 'SetForegroundWindow', 'No error message is available')

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

我什至尝试发送“记事本”SetForegroundWindow 并得到同样的错误。

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

这篇文章有更多关于这个问题的信息。

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

例如:

import win32gui, win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
shell.SendKeys('%')
win32gui.SetForegroundWindow(window)
于 2013-03-19T15:29:42.127 回答
4

这也对我有用

import win32gui, win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
shell.SendKeys('%')
win32gui.SetForegroundWindow(window.hwnd)
于 2020-03-30T20:28:54.197 回答
1

什么对我有用...

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('%')
于 2021-01-27T12:09:29.140 回答