![]() |
Komisches Verhalten nach Hochfahren aus dem Standby
Hallo!
Gibt es eine Möglichkeit zu überprüfen ob der Benutzer eingeloggt ist oder nicht? Das einzige was ich finden konnte ist ein Ereignis beim Hochfahren aus dem Standby oder Ruhezustand. Eigentlich ist es auch das was ich wollte. Aber das Problem ist, dass zu dem Zeitpunkt der Benutzer noch nicht eingeloggt ist und dann scheinen bestimmte dinge nicht zu funktionieren (Netzwerk). Deshalb müsste ich irgendwie bei hochfahren überprüfen ob ich angemeldet bin und den Code erst dann ausführen wenn der Benutzer sich eingeloggt hat. Hat jemand eine Idee? Vielen Dank! Blablab |
Re: überprüfen ob eingeloggt oder nicht
Handelt es sich bei deinem Programm um einen Dienst? Denn normale Programme können ohnehin nur laufen, wenn der Benutzer eingeloggt ist.
Oder meinst du eingeloggt auf einem Netzwerkserver? |
Re: überprüfen ob eingeloggt oder nicht
Das ist n ganz normales Programm. Ich ragier auf WM_POWERBROADCAST. Ich hab da einfach mal n messagbeep reingemacht, den Pc in standby gebracht und wieder hochgefahren und dann piept das programm obwohl der Logon-Bildschirm angezeigt wird. Also anscheinend wird der Code ausgeführt obwohl ich nicht eingeloggt bin, und das möchte ich verhindern, weil zu diesem Zeitpunkt anscheinend zwar messageBeep aber nicht das Netzwerk funktioniert...
|
Re: überprüfen ob eingeloggt oder nicht
Der Benutzer ist da sehr wohl eingeloggt, nur ist die Arbeitsstation zu dem Zeitpunkt gesperrt. ;-)
So macht die Frage dann auch Sinn. Zitat ![]() Zitat:
WTSRegisterSessionNotification gibt es ab Windows XP. |
Re: überprüfen ob eingeloggt oder nicht
Mmmhhh, das ist komisch...
Ich habs jetzt so gemacht:
Delphi-Quellcode:
und beim hochfahren aus dem Stanby sehe ich dann den Login-Bildschirm. Während dieser angezeigt wird piept es 8 mal im Sekundentakt. Anscheinend funktionieren die ersten 3 schleifendurchläufe nicht richtig. Und wenn ich in dieser "Startphase" das Netwerk überprüf funktionierts nicht, danach aber anscheinend schon...
procedure TForm1.PowerBroadcast(var msg: TMessage);
var i: integer; begin if (msg.WParam = PBT_APMRESUMECRITICAL) or (msg.WParam = PBT_APMRESUMESUSPEND) or (msg.WParam = PBT_APMRESUMESTANDBY) then begin for i := 1 to 10 do begin messagebeep(0); sleep(1000); end; messagebeep(16); end; end; @jaenicke sorry, an diesen unterschied zwischen eingeloggt und Arbeitsstation gesperrt hab ich gar nicht gedacht... Aber das Problem ist, wenn ich auf WTSRegisterSessionNotification (anstatt auf PowerBroadcast) reagiere und jemand hat eingestellt, dass nach dem Standyby die Arbeitsstation nicht gesperrt ist, dann bekommt mein Programm es ja gar nicht mehr mit, wenn ich nach dem Standby wieder hochfahre, oder? |
Re: überprüfen ob eingeloggt oder nicht
Das eine schließt das andere doch nicht aus. Ich meine, ob der "Netzwerkzugriff", was auch immer du genau machst, fehlschlägt, merkst du ja, oder?
Interessant ist also zu erfahren, wenn du es erneut probieren könntest. Zum Beispiel bei einem Messenger, der sich wieder einwählt. Und das kannst du ja sowohl bei Power-Notifications als auch bei WM_WTSSESSION_CHANGE versuchen. |
Re: Komisches Verhalten nach Hochfahren aus dem Standby
Aber wenn der Benutzer eingestellt hat, dass beim hochfahren aus dem Standby die Arbeitsstation nicht gesperrt ist, dann klappts mit dem wieder einloggen nicht...
Ich mach jetzt einfach
Delphi-Quellcode:
dann gehts
sleep(3000);
Vielen Dank für deine Unterstützung jaenicke! |
Re: Komisches Verhalten nach Hochfahren aus dem Standby
Wobei Sleep() performancetechnisch suboptimal ist.
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz