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。通过许多众所周知的导出方法实例化该对象。

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

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值