Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.10.2023, 09:57
infopol infopol вне форума
Прохожий
 
Регистрация: 03.06.2021
Сообщения: 40
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Как определить имя компьютера и 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
КонецЦикла

Как это реализовать в Delphi?

Последний раз редактировалось infopol, 12.10.2023 в 10:01.
Ответить с цитированием
  #2  
Старый 13.11.2023, 21:13
infopol infopol вне форума
Прохожий
 
Регистрация: 03.06.2021
Сообщения: 40
Версия 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;

Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:31.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter