Содержание материала

Example:

 

Code:

unit Unit1;

 

interface

 

uses

Windows, Messages, {...},  Wtsapi;

 

type

TForm1 = class(TForm)

   procedure FormCreate(Sender: TObject);

   procedure FormDestroy(Sender: TObject);

private

{ Private declarations }

   FRegisteredSessionNotification : Boolean;

   procedure AppMessage(var Msg: TMSG; var HAndled: Boolean);

end;

 

var

Form1: TForm1;

 

implementation

 

{$R *.DFM}

 

procedure TForm1.AppMessage(var Msg: TMSG; var Handled: Boolean);

var

strReason: string;

begin

Handled := False;

// Check for WM_WTSSESSION_CHANGE message

if Msg.Message = WM_WTSSESSION_CHANGE then

begin

    case Msg.wParam of

      WTS_CONSOLE_CONNECT:

          strReason := 'WTS_CONSOLE_CONNECT';

      WTS_CONSOLE_DISCONNECT:

          strReason := 'WTS_CONSOLE_DISCONNECT';

      WTS_REMOTE_CONNECT:

          strReason := 'WTS_REMOTE_CONNECT';

      WTS_REMOTE_DISCONNECT:

          strReason := 'WTS_REMOTE_DISCONNECT';

      WTS_SESSION_LOGON:

          strReason := 'WTS_SESSION_LOGON';

      WTS_SESSION_LOGOFF:

          strReason := 'WTS_SESSION_LOGOFF';

      WTS_SESSION_LOCK:

          strReason := 'WTS_SESSION_LOCK';

      WTS_SESSION_UNLOCK:

          strReason := 'WTS_SESSION_UNLOCK';

      WTS_SESSION_REMOTE_CONTROL:

          begin

            strReason := 'WTS_SESSION_REMOTE_CONTROL';

            // GetSystemMetrics(SM_REMOTECONTROL);

          end;

     else

       strReason := 'WTS_Unknown';

    end;

  // Write strReason to a Memo

  Memo1.Lines.Add(strReason + ' ' + IntToStr(msg.Lparam));

end;

end;

 

procedure TForm1.FormCreate(Sender: TObject);

begin

// register the window to receive session change notifications.

FRegisteredSessionNotification := RegisterSessionNotification(Handle, NOTIFY_FOR_THIS_SESSION);

Application.OnMessage := AppMessage;

end;

 

procedure TForm1.FormDestroy(Sender: TObject);

begin

// unregister session change notifications.

if FRegisteredSessionNotification then

  UnRegisterSessionNotification(Handle);

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

// retrieve current session ID

ShowMessage(Inttostr(GetCurrentSessionID));

end;

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить