gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 14:41:26 26 4
gpt4 key购买 nike

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

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

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

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

我对特定于 Windows 的解决方案很满意,因为我知道这可能意味着处理窗口管理器或者可能是另一种通知我的方式,而不是使用 MessageBox。

最佳答案

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

  1. 第一种方法 - 使用 MB_SYSTEMMODAL(4096 值)标志。根据我的经验,它使 Msg 对话框“始终在最前面”。

    win32ui.MessageBox("The website has changed.", "Website Change", MB_SYSTEMMODAL)
  2. 第二种方式 - 尝试通过 Following 调用将您的控制台/窗口/对话框置于最前面。当然,如果您使用 MessageBox,则必须在调用 MessageBox 之前执行此操作(对于您自己创建的窗口)。

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

关于console窗口的闪烁,可以尝试以隐藏状态启动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

关于python - 让 Win32 MessageBox 出现在其他程序之上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11765324/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com