Код:
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;
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])+
'.'
;
Result:=(WTS_CLIENT_ADDRESS
.
AddressFamily=
2
);
finally
System
.
FreeMemory(PWTS_CLIENT_ADDRESS);
WTSFreeMemory(PWTS_CLIENT_ADDRESS);
end
;
end
;
Код:
function
Get_ClientName :
String
;
var
BufSize:
Cardinal
;
pBuf:
PAnsiChar
;
pSessionId: DWord;
const
WTS_CURRENT_HANDLE=
0
;
begin
ProcessIdToSessionId(GetCurrentProcessId, pSessionId);
if
WTSQuerySessionInformationA(WTS_CURRENT_HANDLE, pSessionId,
WTSClientName,
Pointer
(pBuf), BufSize)
then
try
SetString(Result, pBuf, BufSize);
finally
WTSFreeMemory(pBuf);
end
;
end
;