AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Feststellen wann bei Windows An- und abgemeldet?
Thema durchsuchen
Ansicht
Themen-Optionen

Feststellen wann bei Windows An- und abgemeldet?

Ein Thema von stoxx · begonnen am 20. Jun 2007 · letzter Beitrag vom 20. Jun 2007
Antwort Antwort
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#1

Feststellen wann bei Windows An- und abgemeldet?

  Alt 20. Jun 2007, 12:29
wie kann man feststellen, ob sich der User gerade bei Windows mit (WinTaste+L) abmeldet, und wenn er sich dann wieder anmeldet?
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#2

Re: Feststellen wann bei Windows An- und abgemeldet?

  Alt 20. Jun 2007, 12:36
Zitat von stoxx:
ob sich der User gerade bei Windows mit (WinTaste+L) abmeldet
Gar nicht, da das keine Abmeldung ist. Der Desktop wird nur gesperrt (L steht für 'Lock').
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Feststellen wann bei Windows An- und abgemeldet?

  Alt 20. Jun 2007, 12:37
für was benötigst du das und unter welchem Betriebssystem soll es laufen?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#4

Re: Feststellen wann bei Windows An- und abgemeldet?

  Alt 20. Jun 2007, 14:45
Zitat von SirThornberry:
für was benötigst du das und unter welchem Betriebssystem soll es laufen?
für WindowsXP .. ein bestimmtes Programm, was vor dem sperren auf 4 Monitore verteil war, ist nach dem Wiederanmelden auf einmal nur auf einem Bildschirm zu sehen.
Ist aber nur das eine Programm.. wollte es nach dem Anmelden quasi wieder herstellen.

Gruß
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#5

Re: Feststellen wann bei Windows An- und abgemeldet?

  Alt 20. Jun 2007, 15:08
wenn ich dich richtig verstehe, sollte dir das helfen:

Delphi-Quellcode:
function IsWorkstationLocked: Boolean;
var
  hDesktop: HDESK;
begin
  Result := False;
  hDesktop := OpenDesktop('default',
    0, False,
    DESKTOP_SWITCHDESKTOP);
  if hDesktop <> 0 then
  begin
    Result := not SwitchDesktop(hDesktop);
    CloseDesktop(hDesktop);
  end;
end;
Gruß Frank
  Mit Zitat antworten Zitat
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
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#7

Re: Feststellen wann bei Windows An- und abgemeldet?

  Alt 20. Jun 2007, 15:40
mal das Beispiel-Programm von
http://read.excode.ru/art3405.html

(ist evtl. was für die CodeLib)

bisschen umfangreicher als der Code von SirT

HTH Frank
Angehängte Dateien
Dateityp: zip sessionchange_912.zip (117,3 KB, 10x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Feststellen wann bei Windows An- und abgemeldet?

  Alt 20. Jun 2007, 15:43
beim link ist eben ein kompletter Quelltext zu finden und nicht nur die relevanten Teile. Zudem sind die Constanten neu definiert wurden.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#9

Re: Feststellen wann bei Windows An- und abgemeldet?

  Alt 20. Jun 2007, 15:43
Hi ! besten Dank, der Tip mit WM_WTSSESSION_CHANGE war der Richtige, habs dann auch selber bei SwissdelphiCenter gefunden
funktioniert wunderbar.
Dankeschön !

http://www.swissdelphicenter.ch/de/showcode.php?id=1109
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#10

Re: Feststellen wann bei Windows An- und abgemeldet?

  Alt 20. Jun 2007, 15:55
Für XP gibts auch noch die Winlogon Notifier .. dürfte die Beste Lösung sein. Gibt da verschiedene Events, die aufgerufen werden .. musst du mal im PSDK suchen ..
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz