Python如何将MessageboxW保存在所有其他窗口之上?

时间:2018-04-29 11:40:37

标签: python windows python-3.x ctypes messagebox

上下文

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

问题:

目前,消息框将显示在所有其他窗口的顶部,但由于它是一个如此小的窗口,用户可以轻松地点击另一个可隐藏消息框的窗口。

我想要什么

我希望将消息框始终放在其他窗口之上。如果无法做到这一点,那么还有办法增加消息框的尺寸吗?

示例代码:

import ctypes

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

1 个答案:

答案 0 :(得分:2)

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函数似乎在使用just时效果很好 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)或者你也许可以创建一个自定义窗口来使用。

请参阅http://rextester.com/OZRW13368了解要使用的值。

另见MSDN MessageBox function