在写程序时使用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。通过许多众所周知的导出方法实例化该对象。
丫丫还不是很懂,不过程序还好。没有再出现错误。