Autor Beitrag
patrick123
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Sa 07.04.07 17:44 
Hallo erstmal :wink:
Ich habe da ein Problem:
Ich will das mein Programm beim Abmelden des momentanen Benutzers Anweisungen ausführt. Ich hab auch schonmal was davon gelesen, irgendwie wm_query_end oder so. Weiß jemand wie das genau funktioniert? Und wird es auch funktionieren, wenn ich
ausblenden Delphi-Quelltext
1:
2:
3:
ShowWindow(Application.Handle, SW_HIDE);
SetWindowLong(Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
ShowWindow(Application.Handle, SW_SHOW);

benutze? Über die Boardsuche habe ich nichts gefunden. Kann mir jemand helfen?


Patrick

P.S.: Ich habe übrigens nichts Bösartiges vor, soll eine Art Sidebar werden :wink:
Silas
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 478

Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
BeitragVerfasst: Sa 07.04.07 18:04 
Hallo und :welcome: im DF!!

Wenn du unter abmelden wirklich nur Abmelden und Herunterfahren bzw. Neustarten (und nicht auch "Benutzer wechseln") vertstehst, musst du so viel ich weiß deine Befehle nur in die FormClose-Methode deines Formulars schreiben. Dass funktioniert immer, wenn die Form vorhanden ist (Also Destroy noch nicht ausgeführt wurde). Dafür darf sie auch versteckt oder sonst irgendwas sein, hauptsache sie existiert.
Es kann sein, dass ich mich mit FormClose irre und es doch FormDestroy ist, ich bin mir nicht mehr so sicher.

_________________
Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat ;-)
patrick123 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Sa 07.04.07 18:22 
Ich hab's nur im Onclose versucht :shock:
Deshalb gings nicht. Im ondestroy gehts nämlich.
Danke für die Hilfe!
Drahcir
Hält's aus hier
Beiträge: 5

Win XP Home
C++ (Borland C++ - Builder 6.0), Delphi 2005 Prof.
BeitragVerfasst: Mi 16.05.07 11:35 
Windows versendet beim Beenden zusätzlich die Nachricht
WM_QUERYENSESSION. Dabei wird nachgefragt, ob Windows beendet werden kann.
Beim Beenden (wenn alle Anwendungen zugestimmt haben) wird dann noch
WM_ENDSESSION gesendet. Wenn du nun wills, das sich die Anwendung nur beim
Herunterfahren beendet, brauchst du einen boolean-Wert, der immer auf false steht und
erst beim Erhalt einer der obrigen Nachrichten auf tru gesetzt wird.
Im OnCloseQuery-Ereignis des Formlars weist du dann CanClose diesen Wert zu.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 16.05.07 13:54 
user profile iconDrahcir hat folgendes geschrieben:
ob Windows beendet werden kann.
Beim Beenden (wenn alle Anwendungen zugestimmt haben)

Für Windows Vista trifft dies nicht mhr so zu.

Und:
Zitat:
When an application returns TRUE for this message, it receives the WM_ENDSESSION message, regardless of how the other applications respond to the WM_QUERYENDSESSION message. Each application should return TRUE or FALSE immediately upon receiving this message, and defer any cleanup operations until it receives the WM_ENDSESSION message.