Messagebox mit Timeout
Nachdem Zeit Geld ist und jemand nicht unbedingt immer die Nerven hat eine Messagebox wegzuklicken habe ich heute mal schnell eine MessageBox mit Timeout programmiert.
Das Prinzip ist denkbar simpel: Messagebox Hooken, Windowhandle bei Initialisierung holen, Timer Setzen und bei Timeout default-Button drücken.
Dabei bin ich jedoch durch einen Programmierfehler (vergessen die Timerprozedur in SetTimer anzugeben) auf ein interessantes Verhalten gestoßen:
Scheinbar reicht es, einen Timer mit der ID 1 mit SetTimer
in der MessageBox anzulegen, der dann nach Ablauf der Zeit ein WM_TIMER an die Messagebox sendet. Vermutlich hat die Dialogprozedur des Systems schon von sich aus eine Logik dahinter, die die Box dann schließt.
Code siehe hier: MessageBox mit Timeout
Eine noch interessantere Lösung habe ich dann schließlich in der MSDN gefunden:
KB181934
Update (15.05.2009): Eine noch interessantere Lösung dafür ist die Verwendung der internen API, welche scheinbar auch von MessageBox verwendet wird. Siehe hierzu diesen CodeProject Artikel.