Einzelnen Beitrag anzeigen

HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#9

AW: Terminalserver Session ID

  Alt 5. Sep 2019, 16:20
Hmm..

Lass das mit dem Drucker, das funktioniert nur dann wenn der TherminalServer so konfiguriert ist..

Geht auch einfacher:

Delphi-Quellcode:
function ProcessIdToSessionId(dwProcessId: DWORD;var pSessionId: DWORD): BOOL; stdcall; external kernel32 name 'ProcessIdToSessionId';



var
  nProcessID, nSessionID : DWORD;
begin
  nProcessID := GetCurrentProcessId;
  nSessionID := 0;
  if ProcessIdToSessionID( nProcessID, nSessionID) then begin
    if nSessionID > 0 then begin
      // Mach was mit der ID....
    end;
  end;
end;

Kann z.B. genutzt werden um den ClientNamen zu ermitteln:

Delphi-Quellcode:
function GetPCClientName : string;
var
  nProcessID, nSessionID : DWORD;
  nByteCount : DWORD;
  acNameBuff : Pointer;
  tmpName : string;
begin
  Result := '';

  nProcessID := GetCurrentProcessId;
  nSessionID := 0;
  if ProcessIdToSessionID( nProcessID, nSessionID) then begin
    if nSessionID > 0 then begin
      if WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE, nSessionId, WTSClientName, acNameBuff, nByteCount) then begin
        tmpName := StrPas(PChar(acNameBuff));
        // Da bei Vista kein Name vorhanden ist, auf Leerstring prüfen!
        if tmpName <> 'then
          result := tmpName;
        WTSFreeMemory(acNameBuff);
      end;
    end;
  end;
end;
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat