Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Feststellen wann bei Windows An- und abgemeldet?

  Alt 20. Jun 2007, 15:15
nicht wirklich die beste Methode. In einem Service oder mit ausreichend Berechtigungen schlägt diese Prüfung fehl.

[Edit]
Über google hab ich grad folgende Windows-Message gefunden: WM_WTSSESSION_CHANGE
Ich glaub das dürfte die sein die du suchst.

Hab mal was zusammengetippt:
Delphi-Quellcode:
const
  NOTIFY_FOR_ALL_SESSIONS = 1;

type
  [...]
  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;
[/Edit]
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat