|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Как определить имя компьютера и IP адрес подключенного через RDP ?
Нашел такой пример
Код:
WTS = Новый COMОбъект("WTSManager.Shell") Сообщить "My computer name: " + WTS.MyClientName + " " + "My IP address: " + WTS.MyIPAddress Сессия = "Total sessions: " & WTS.ClientCount Для каждого i = 1 из WTS.ClientCount Цикл S = S + Chr(13) + WTS.Clients(i).WinStationName + " User: " + WTS.Clients(i).UserName + " IP: " + WTS.Clients(i).IPAddress КонецЦикла Последний раз редактировалось infopol, 12.10.2023 в 10:01. |
#2
|
|||
|
|||
Разобрался сам. Оказалось всё просто
Код:
Код: 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; |