Есть задача определение IP и имя удаленного компьютера подключенного через терминальный доступ (RDB).
function WTSQuerySessionInformationA(hServer: THandle; SessionId: Integer;
WTSInfoClass: Integer; var ppBuffer: Pointer; var pBytesReturned: DWORD
): BOOL; stdcall; external 'wtsapi32.dll' name 'WTSQuerySessionInformationA';
Код:
const
WTSClientAddress=14
WTS_CURRENT_SESSION=-1
function Get_TerminalSesion :String;
var
BufSize: Cardinal;
ppBuffer:Pointer;
pBuf:PAnsiChar;
pSessionId: DWORD;
const
WTS_CURRENT_SESSION=-1;
WTS_CUR_SERVER_HANDLE =0;
begin
// WTS_CURRENT_SERVER_HANDLE:=0;
// ProcessIdToSessionId(GetCurrentProcessId, pSessionId);
// èëè pSessionId := DWORD(-1);
if WTSQuerySessionInformationA(WTS_CUR_SERVER_HANDLE,WTS_CURRENT_SESSION,WTSClientAddress,ppBuffer, BufSize) then
try
// pBuf:=@ppBuffer;
// (pBuf) ;
// ShowMessage( pBuf);
//NumGet(Pointer(pBuf),0,'u') ;
// SetString(Result, ppBuffer^, BufSize);
// (ppBuffer);
finally
WTSFreeMemory(ppBuffer);
end;
end;