BSOne.SFC/Tocsg.Module/CheckRDP/DCheckRDP.pas

55 lines
1.1 KiB
Plaintext

unit DCheckRDP;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TDlgCheckRDP = class(TForm)
btnCheck: TButton;
mmInfo: TMemo;
procedure btnCheckClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
DlgCheckRDP: TDlgCheckRDP;
implementation
uses
Tocsg.Process, Tocsg.WTS, Tocsg.Safe;
{$R *.dfm}
procedure TDlgCheckRDP.btnCheckClick(Sender: TObject);
var
PidList: TProcessIdList;
i: Integer;
sAccount: String;
dwSsid: DWORD;
begin
mmInfo.Clear;
Guard(PidList, TProcessIdList.Create);
if GetProcessPidsByName('winlogon.exe', PidList) = 0 then
MessageBox(Handle, PChar('¿À·ù...1'), PChar(Caption), MB_ICONWARNING or MB_OK);
for i := 0 to PidList.Count - 1 do
begin
dwSsid := 0;
if ProcessIdToSessionId(PidList[i], dwSsid) and (dwSsid <> 0) then
begin
sAccount := WTS_GetUserNameFromSessionID(dwSsid);
mmInfo.Lines.Add(IntToStr(dwSsid) + ' : ' + sAccount);
end;
end;
end;
end.