2016-04-06 388 views
1

は、私はすでにPythonがMessageboxはを作成する方法を知っている:Pythonで数秒でメッセージボックスを自動的に閉じる方法は?

import ctypes 

ctypes.windll.user32.MessageBoxW(0, 'test', "Reminding", 0) 

しかし、私はそれが現れた後、それは数秒でそれ自体で閉じられるようにしたいです。

これを実現する方法はありますか?

擬コード:

def AutoCloseMessageBoxW(text, title, close_until_seconds) 

私は方法の多くは、このようなC#やJavaなど他の言語でこれを実現することが分かってきました。

しかし、私はPythonでそれを実現する方法を見つけることができません。

+0

'user32'を介して起動している標準のWindowsメッセージボックスには、組み込みの自己終了メカニズムはありません。 C#とJavaがこれを許可しているのは、別の方法で動作するメッセージボックスの実装を独自に作成したからです。 –

答えて

-1
import ctypes 
import threading 
import time 
#ctypes.windll.user32.MessageBoxA(0, 'test', "Reminding", 0) 

def worker(title,close_until_seconds): 
    time.sleep(close_until_seconds) 
    wd=ctypes.windll.user32.FindWindowA(0,title) 
    ctypes.windll.user32.SendMessageA(wd,0x0010,0,0) 
    return 

def AutoCloseMessageBoxW(text, title, close_until_seconds): 
    t = threading.Thread(target=worker,args=(title,close_until_seconds)) 
    t.start() 
    ctypes.windll.user32.MessageBoxA(0, text, title, 0) 


AutoCloseMessageBoxW('112','TEST_CLOSE',3) 
+0

コードダンプは解決策を提供するかもしれませんが、それらから学びたい人にとっては不明瞭です。いくつかの言葉であなたのアプローチの重要な要素と、それがどのように/なぜ機能するのかを記述できますか? – Reti43

+0

タイトルが一意であることが保証されていないので、ウィンドウをタイトルで殺すスレッドを持つことは非常に危険です。特に、ユーザーが最初のメッセージボックスを閉じた後に2番目のメッセージボックスが表示された場合 –

関連する問題