我最近开始学习Python,并编写了一个小脚本,在某个网站更改内容时通知我。然后我将其作为计划任务添加到Windows中,以便它每10分钟运行一次。我想立即得到网站更改的通知,所以我添加了一个win32ui消息框,如果脚本检测到网站已更改,将弹出该消息框。下面是我在MessageBox中使用的小代码片段(我知道,这是一段富有想象力的文本):
win32ui.MessageBox("The website has changed.", "Website Change", 0)
我的问题是,我大部分时间都在使用远程桌面,所以当消息框弹出时,它位于远程桌面会话的后面,有没有办法强制消息框出现在上面?
同样,当脚本运行时,命令行会在远程桌面会话(我不希望这样做)上非常短暂地打开,有没有办法停止这种行为?
我对Windows特定的解决方案很满意,因为我知道这可能意味着要处理窗口管理器,或者可能是一种通知我的替代方法,而不是使用消息框。
当您从任务调度程序启动任何内容时,Windows会阻止任何将窗口或对话框置于顶层的“简单”方法。
第一种方式-使用
MB_SYSTEMMODAL
(4096值)标志。以我的经验,它使味精对话“永远在最上面”。第二种方法-尝试通过以下调用将控制台/窗口/对话框置于最前面。当然,如果您使用
MessageBox
,那么在调用MessageBox
之前必须这样做(对于您自己创建的窗口)。至于控制台窗口的闪烁,您可以尝试在隐藏状态下启动Python。例如,使用ConEmu、'HidCon'或cmdow。参考他们的参数,比如:
通过使用
pyw
扩展名而不是简单的py
命名脚本来避免命令窗口闪烁。您也可以使用pythonw.exe
,而不是python.exe
,这取决于您的需求。见http://onlamp.com/pub/a/python/excerpts/chpt20/index.html?page=2
使用ctypes它显示一个非常容易使用的windows错误消息框
相关问题 更多 >
编程相关推荐