微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 让Win32 MessageBox出现在其他程序上

我最近开始学习Python并写了一个小脚本,当某个网站改变内容通知我.然后我将它作为计划任务添加到Windows,以便它可以每10分钟运行一次.我想立即通知网站更改,因此我添加一个win32ui MessageBox,如果脚本检测到网站已更改,则会弹出该消息框.这是我用于MessageBox的小代码片段(富有想象力的文字,我知道):

win32ui.MessageBox("The website has changed.", "Website Change", 0)

我的问题是,我花了大部分时间使用远程桌面,所以当MessageBox弹出它位于远程桌面会话后面时,有没有办法强制MessageBox出现在它上面?

在脚本运行的类似注释上,命令行在我不想要的远程桌面会话上非常简短地打开,有什么方法可以阻止这种行为吗?

我对Windows特定的解决方案感到满意,因为我知道它可能意味着处理窗口管理器,或者可能是另一种通知我而不是使用MessageBox方法.

解决方法:

当您从任务计划程序启动任何内容时,Windows会阻止任何“简单”的方式将您的窗口或对话框置于顶端.

>第一种方法 – 使用MB_SYstemMODAL(4096值)标志.根据我的经验,它使Msg对话框“永远在顶部”.

win32ui.MessageBox("The website has changed.", "Website Change", MB_SYstemMODAL)

>第二种方式 – 尝试通过以下调用将控制台/窗口/对话框置于最前面.当然,如果你使用MessageBox,你必须在调用MessageBox之前(对于你自己创建的窗口)这样做.

SetForegroundWindow(Wnd);
BringWindowToTop(Wnd);
SetForegroundWindow(Wnd);

至于控制台窗口的闪烁,您可能会尝试以隐藏状态启动Python.例如,使用ConEmu,’HidCon’或cmdow.请参阅其参数,例如:

ConEmu -basic -MinTSA -cmd C:\Python27\python.exe C:\PythonScript.py
    or
CMDOW /RUN /MIN C:\Python27\python.exe C:\PythonScript.py

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐