上下文:

我有一个小脚本,它通过使用Windows内置消息框(引用文件MSDN MessageBox)创建一个消息框来警告用户事件,该消息框是使用ctypes导入的。该脚本适用于Windows OS。

问题:

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

我想要的

我想使消息框始终位于其他窗口的顶部。如果无法做到这一点,那么是否有办法增加消息框的尺寸?

示例代码:

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 - Python如何使MessageboxW保持在所有其他窗口之上?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50086178/

10-11 22:46
查看更多