
13.11.2023, 21:13
|
Прохожий
|
|
Регистрация: 03.06.2021
Сообщения: 35
Версия Delphi: Delphi 7
Репутация: 10
|
|
Разобрался сам. Оказалось всё просто
Код:
Код:
function Get_TerminalSesion(var IpAdr:String) :boolean;
Var
WTS_CLIENT_ADDRESS :TWTS_CLIENT_ADDRESS ;
PWTS_CLIENT_ADDRESS:^TWTS_CLIENT_ADDRESS;
BufSize: DWORD;
i:Integer;
buf:Byte;
pSessionId: DWORD;
Res:string;
PAddres:^Address;
//IPAdr:String;
begin
Res:= ( StringOfChar(Chr(0),4));
BufSize:= Integer( Addr(Res)^);
result:=false;
ProcessIdToSessionId(GetCurrentProcessId, pSessionId);
if WTSQuerySessionInformationA(WTS_CURRENT_SERVER_HANDLE,pSessionId,WTSClientAddress,Pointer(PWTS_CLIENT_ADDRESS ),BufSize) then
try
WTS_CLIENT_ADDRESS:=PWTS_CLIENT_ADDRESS^;
IpAdr:='';
for i:=2 to 5 do
IPAdr:=IpAdr+ IntToStr( WTS_CLIENT_ADDRESS.IPAddress[i])+'.';
// IntToStr(WTS_CLIENT_ADDRESS.AddressFamily)
// ShowMessage(' > '+ IntToStr(WTS_CLIENT_ADDRESS.AddressFamily)+'; IP '+IpAdr);//IntToStr( WTS_CLIENT_ADDRESS.IPAddress[6])+'.'+IntToStr(WTS_CLIENT_ADDRESS.IPAddress[7])+'.'+IntToStr( WTS_CLIENT_ADDRESS.IPAddress[8])+'.'+IntToStr( WTS_CLIENT_ADDRESS.IPAddress[9]));
Result:=(WTS_CLIENT_ADDRESS.AddressFamily=2);
finally
System.FreeMemory(PWTS_CLIENT_ADDRESS);
WTSFreeMemory(PWTS_CLIENT_ADDRESS);
// WTSFreeMemory(@ppBuffer);
end;
end;
Код:
function Get_ClientName :String;
var
BufSize: Cardinal;
pBuf: PAnsiChar;
pSessionId: DWord;
const
WTS_CURRENT_HANDLE=0;
begin
//pSessionId:=1;
ProcessIdToSessionId(GetCurrentProcessId, pSessionId);
// pSessionId:=-1;
// èëè pSessionId := DWORD(-1);
if WTSQuerySessionInformationA(WTS_CURRENT_HANDLE, pSessionId,
WTSClientName, Pointer(pBuf), BufSize) then
try
SetString(Result, pBuf, BufSize);
// ShowMessage(Result+' '+GettingComputerName+' '+ GetLocalName);
finally
WTSFreeMemory(pBuf);
end;
end;
|