3

私は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;
4

1 に答える 1

3

のパラメータを渡しNULLています。ドキュメントから:hWndMessageBox

作成するメッセージ ボックスのオーナー ウィンドウへのハンドル。このパラメーターが NULL の場合、メッセージ ボックスにはオーナー ウィンドウがありません。

したがって、メッセージ ボックスにはオーナー ウィンドウがありません。つまり、他のウィンドウの背後に表示される可能性があります。理想的には、アプリケーションで適切なオーナー ウィンドウのウィンドウ ハンドルを渡す必要があります。所有されているウィンドウは常に所有者の上に表示されます。これは、どのウィンドウを他のウィンドウの上に表示するかを制御する最も一般的な方法です。

しかし、そのようなウィンドウ ハンドルを思いつくのは難しいと思うかもしれません。その場合、パラメーターにMB_TOPMOSTフラグを含めるとuType、パラメーター番号 4 がニーズを満たすことがあります。

ただし、あなたが求めていることを達成することは明らかに不可能であるため、正確なニーズが何であるかを完全に確認することは困難です. あなたはその窓を頼んだ

すべてのプログラムの上に立つ

矛盾を示すことで証明できるように、それは明らかに不可能です。ウィンドウが他のすべてのウィンドウの上に表示されたとします。あなたのウィンドウがそれを行うことができれば、別のウィンドウも可能です。そして明らかに、2 つの異なるウィンドウを他のすべてのウィンドウの上に表示することはできません。

于 2013-04-28T12:39:06.197 に答える