python ctypes消息框出现在所有程序下

时间:2013-04-26 13:29:34

标签: python ctypes messagebox

我是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;

1 个答案:

答案 0 :(得分:3)

您正在为NULL hWnd参数传递MessageBox。来自documentation

  

要创建的消息框的所有者窗口的句柄。如果此参数为NULL,则消息框没有所有者窗口。

因此,消息框没有所有者窗口。这意味着它可能会出现在其他窗口后面。理想情况下,您应该在应用程序中传递适当所有者窗口的窗口句柄。拥有的窗户总是出现在他们的主人之上。这是控制哪些窗口出现在其他窗口之上的最常用方法。

然而,我怀疑你可能会发现很难想出这样一个窗口句柄。在这种情况下,您可能会发现在MB_TOPMOST参数(参数编号4)中包含uType标记符合您的需求。

很难确定你的确切需求是什么,因为你要求的东西显然是不可能实现的。你问那个窗口

  

高于所有计划

嗯,这显然是不可能的,正如通过展示矛盾所证明的那样。假设您的窗口显示在所有其他窗口之上。如果您的窗口可以这样做,那么另一个窗口也可以。显然,你不能有两个不同的窗口显示在所有其他窗口之上。