![]() |
Sperrung des Desktops erkennen
Möchte man auf das Sperren und das Entsperren des Desktops (Windows + L) reagieren, muss man die Windows-Nachricht WM_WTSESSION_CHANGE (
![]()
Delphi-Quellcode:
Man bedient sich dabei zweier Funktionen, die in der wtsapi32.dll definiert wurden. Diese sind jedoch nur in Windows XP und Vista verfügbar. Es ist dabei zu beachten, dass das statische Einbinden der Bibliothek bei anderen Windows-Versionen fehlschlagen wird - es empfiehlt sich das dynamische Einbinden der Bibliotheken.
const
NOTIFY_FOR_ALL_SESSIONS = 1; type TForm1 = class(TForm) { ... } private fRegisterSuccess: Bool; procedure WMWTSSESSIONCHANGE(var AMsg: TMessage); message WM_WTSSESSION_CHANGE; end; function WTSRegisterSessionNotification(AHandle: HWND; AFlags: DWORD): Bool; stdcall external 'wtsapi32.dll'; function WTSUnRegisterSessionNotification(AHandle: HWND): Bool; stdcall external 'wtsapi32.dll'; { ... } implementation procedure TForm1.WMWTSSESSIONCHANGE(var AMsg: TMessage); begin case AMsg.WParam of WTS_SESSION_LOCK: Memo1.Lines.Add('Gesperrt um: ' + TimeToStr(Time())); WTS_SESSION_UNLOCK: Memo1.Lines.Add('Entsperrt um: ' + TimeToStr(Time())); end; inherited; end; procedure TForm1.FormCreate(Sender: TObject); begin fRegisterSuccess := WTSRegisterSessionNotification(Self.Handle, NOTIFY_FOR_ALL_SESSIONS); end; procedure TForm1.FormDestroy(Sender: TObject); begin if fRegisterSuccess then WTSUnRegisterSessionNotification(Self.Handle); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:27 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