我是python中的新手,我需要一个消息框。我使用了ctypes但它打开了所有其他程序下的消息框。如何才能使 以上所有程序?
import ctypes
def run(x=0):
STOP = False
x += 5
MessageBox = ctypes.windll.user32.MessageBoxA
reply = MessageBox(None, 'text', 'title', 1)
if reply == 1 and not STOP:
threading.Timer(3, run).start()
else:
STOP = True;
答案 0 :(得分:3)
您正在为NULL
hWnd
参数传递MessageBox
。来自documentation:
要创建的消息框的所有者窗口的句柄。如果此参数为NULL,则消息框没有所有者窗口。
因此,消息框没有所有者窗口。这意味着它可能会出现在其他窗口后面。理想情况下,您应该在应用程序中传递适当所有者窗口的窗口句柄。拥有的窗户总是出现在他们的主人之上。这是控制哪些窗口出现在其他窗口之上的最常用方法。
然而,我怀疑你可能会发现很难想出这样一个窗口句柄。在这种情况下,您可能会发现在MB_TOPMOST
参数(参数编号4)中包含uType
标记符合您的需求。
很难确定你的确切需求是什么,因为你要求的东西显然是不可能实现的。你问那个窗口
高于所有计划
嗯,这显然是不可能的,正如通过展示矛盾所证明的那样。假设您的窗口显示在所有其他窗口之上。如果您的窗口可以这样做,那么另一个窗口也可以。显然,你不能有两个不同的窗口显示在所有其他窗口之上。