HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Ki-, bejelentkezés, felhasználói váltás eseménye


Példaprogram letöltése

4477 bájt

Ha nyomon szeretnénk követni programból azt az eseményét, hogy melyik felhasználónk jelentkezik be, vagy ki a számítógépen, akkor ennek módját megtudhatjuk a mellékelt cikkből. Figyeltethetjük továbbá azt is, ha csak zárolja (Lock) a felhasználó a gépet, vagy azt is ha egy távoli felhasználó jelentkezik be hálózaton keresztül a számítógépünkre.

A mellékelt példa kipróbálásához indítsa el az alkalmazást, majd váltson felhasználót (Win + L billentyű, vagy kijelentkezés - felhasználó váltás). Miután bejelentkezett más felhasználóként, jelentkezzen ki onnan és ismételten az előző felhasználói névvel jelentkezzen be. Ekkor látható lesz ismét alkalmazásunk ablaka, mely addigra már tele lesz, zárolási, be és kijelentkezési eseményekkel, melyek a fenti műveletek során történtek.
Ezen események figyeléséhez regisztrálnunk kell a Windows-ban ablakunkat, hogy az megkaphassa a megfelelő üzeneteket. Ehhez a WTSRegisterSessionNotification függvényt kell meghívnunk. Itt első paraméterként az ablakunk azonosítóját kell megadnunk, míg másodikként az alábbi konstansok egyikét:
  • NOTIFY_FOR_THIS_SESSION - csak a saját munkamenetünkkel kapcsolatban kapunk üzeneteket
  • NOTIFY_FOR_ALL_SESSIONS - minden munkamenettel kapcsolatban megkapjuk az üzeneteket
Most már kapni fogja ablakunk a megfelelő üzeneteket, viszont jó lenne, ha ezeket mi is elfoghatnánk. Ezért az alkalmazás üzenetkezelő függvényét átirányítjuk a DoMessage függvényünkre.
procedure TForm1.FormCreate(Sender: TObject);
begin
  FReg:=WTSRegisterSessionNotification(Handle, NOTIFY_FOR_ALL_SESSIONS);
  Application.OnMessage:=DoMessage;
end;
Alkalmazásunk futásának végén tudatnunk kell a Windows-al, hogy a továbbiakban már nem tartunk igényt az üzenetek küldésére. Ehhez a WTSUnRegisterSessionNotification függvényt kell meghívnunk, melynek szintén ablakunk azonosítóját adjuk át.
procedure TForm1.FormDestroy(Sender: TObject);
begin
  if FReg then begin
    WTSUnRegisterSessionNotification(Handle);
  end;
end;
A DoMessage függvény kapja meg most az összes beérkező üzenetet. Mivel a Handled paramétert hamisra állítjuk, így ezért olyan mint ha nem is tettünk volna semmit: az eredeti üzenetkezelő fogja elvégezni az érdemi munkát és feldolgozni a beérkezett üzeneteket. Eközben viszont értesülhetünk arról, ha a WM_WTSSESSION_CHANGE üzenet érkezik.
Ilyenkor az üzenet wParam értékéből tudhatjuk meg pontosan, hogy mi is történt.
procedure TForm1.DoMessage(var Msg: TMSG; var Handled: Boolean);
var
  s: string;
begin
  Handled:=false;
  if Msg.Message = WM_WTSSESSION_CHANGE then begin
    s:=IntToStr(Msg.lParam);
    case Msg.wParam of
      WTS_CONSOLE_CONNECT: ListBox1.Items.Add('CONSOLE_CONNECT: '+s);
      WTS_CONSOLE_DISCONNECT: ListBox1.Items.Add('CONSOLE_DISCONNECT: '+s);
      WTS_REMOTE_CONNECT: ListBox1.Items.Add('REMOTE_CONNECT: '+s);
      ...
end;
Végül felhívnánk a figyelmet a GetSystemMetrics függvényre melyeket, ha az SM_REMOTECONTROL vagy az SM_REMOTESESSION paraméterrel hívunk, akkor további lényeges információkat kaphatunk.

Cikksorozat

#IDKategóriaCikk címeSorozat
1488DelphiMS SQL tárolt eljárások1. rész
1499DelphiMS SQL tárolt eljárások2. rész
1507DelphiMS SQL tárolt eljárások3. rész
1519DelphiMS SQL tárolt eljárások4. rész
1526DelphiMS SQL tárolt eljárások5. rész
1537DelphiMS SQL tárolt eljárások6. rész
1546DelphiMS SQL tárolt eljárások7. rész
1553DelphiMS SQL tárolt eljárások8. rész
1564DelphiMS SQL tárolt eljárások9. rész
1573DelphiMS SQL tárolt eljárások10. rész
1582DelphiMS SQL tárolt eljárások11. rész
1591DelphiMS SQL tárolt eljárások12. rész
1600DelphiMS SQL tárolt eljárások13. rész
1609DelphiMS SQL tárolt eljárások14. rész
1617DelphiMS SQL tárolt eljárások15. rész
1626DelphiMS SQL tárolt eljárások16. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2002 évkönyv 392. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |