Python 如何让 MessageboxW 保持在所有其他窗口之上?

标签 python windows python-3.x ctypes messagebox

上下文:

我有一个小脚本,它通过使用 Windows 内置消息框(引用:MSDN MessageBox)创建一个消息框来提醒用户事件,该消息框是使用 ctypes 导入的。此脚本适用于 Windows 操作系统。

问题:

目前,消息框会出现在所有其他窗口的顶部,但由于它是一个很小的窗口,用户可以轻松地单击另一个可能隐藏消息框的窗口。

我想要什么

我想让消息框始终位于其他窗口之上。如果无法做到这一点,那么有没有办法增加消息框的尺寸?

示例代码:

import ctypes

ctypes.windll.user32.MessageBoxW(0, text, title, 0x00010000)

最佳答案

import ctypes

text = 'Using MB_SYSTEMMODAL'
title = 'Some Title'

ctypes.windll.user32.MessageBoxW(0, text, title, 0x1000)

MB_SYSTEMMODAL (0x1000) 具有 WS_EX_TOPMOST (0x40000) 样式。

MessageBoxEx 函数似乎只使用 WS_EX_TOPMOST (0x40000) 样式。

import ctypes

text = 'Using WS_EX_TOPMOST'
title = 'Some Title'

ctypes.windll.user32.MessageBoxExW(0, text, title, 0x40000)

MessageBox 函数没有改变大小的参数。也许 像 tkinter 或其他 gui 工具包这样的替代方案可能能够 更改消息框大小(尽管如果它只是一个包装器可能不会 对于 MessageBoxW)或者您可以创建一个自定义窗口来使用。

参见 MSDN MessageBox function要使用的值。

另见 MSDN MessageBoxEx function .

关于Python 如何让 MessageboxW 保持在所有其他窗口之上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50086178/

相关文章:

ruby - 无法在 Ruby 2.0.0 中传递命令行参数

c# - UWP 的标题栏后退按钮

python - 值错误: Number of labels=25 does not match number of samples=56

python-3.x - 按时间戳分组单个 CSV 文件 - Pandas

python-3.x - 使用 Python3.5 检测正方形 OpencV

python - Django 模板列表未在 for 循环中打印

python - Jupyter 找不到 Python 类

c++ - Windows Media Foundation - 使用模拟相机/采集卡

python - 为 CSV Sqlite Python 脚本提供的绑定(bind)数量不正确

python - 如何解码 <Script LANGUAGE ="JScript.Encode"> 中的 javascript 代码