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

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