python 设置窗口为最前时出现error(0, ‘SetForegroundWindow‘, ‘No error message is available‘

在写程序时使用python的这个工能将某个窗口句柄,调到最前端,在PC机上运行时,发现SetForegroundWindow‘, ‘No error message is available‘,不是每次都出现,也不是每一台都出现。上百度查询后发现这个语句执行时是有条件的,不是每次都能成功。后来试过以下程序,目前没出错。

import pythoncom
from win32com import client
import win32gui
hwnd1 = win32gui.FindWindow(None,'Administrator: Windows PowerShell')
hwnd2 = win32gui.FindWindow(None,'Select Administrator: Windows PowerShell')
if hwnd1:
    hwnd=hwnd1
elif hwnd2:
    hwnd = hwnd2
else:
    hwnd=0
    print("2 is running")
# 通过句柄窗口置顶
if hwnd:
        #Windows以单线程的方式创建com对象
    pythoncom.CoInitialize()
    shell = client.Dispatch("WScript.Shell")
    shell.SendKeys('%')
    win32gui.SetForegroundWindow(hwnd)

我对于这3行代码也不是很懂,于是查阅了一些文件,上面解释说:

“使用pythoncom.CoInitialize()后,线程就和一个套间建立了对应关系。线程的套间模式决定了该线程如何调用COM对象,是否需要列集等

Wscript.shell是服务器系统会用到的一种组件

win32com.client.Dispatch创建一个ActiveX / COM对象。参数是所谓的程序ID。程序ID的另一个示例是“ Excel.Application”,它将用于创建Excel实例。在您的情况下,您正在创建一个wscript.shell对象。程序ID由注册表映射到系统上的DLL。通过许多众所周知的导出方法实例化该对象。

丫丫还不是很懂,不过程序还好。没有再出现错误。

你可能感兴趣的:(python,python)