Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Terminalsitzung erkennen (https://www.delphipraxis.net/86748-terminalsitzung-erkennen.html)

arnold mueller 19. Feb 2007 08:19


Terminalsitzung erkennen
 
Hallo zusammen,

wie kann ich erkennen, ob ein Programm in einer Terminalsitzung (Citrix) ausgeführt wird? Ich habe leider keinen Ansatz und bisher nichts brauchbares gefunden. Ein "Schubs" in die richtige Richtung würde schon helfen...

Gruß,
Arno

mkinzler 19. Feb 2007 09:04

Re: Terminalsitzung erkennen
 
Wenn Client von Workstation abweicht.

marabu 19. Feb 2007 09:08

Re: Terminalsitzung erkennen
 
Hallo,

der SDK widmet diesem Thema eine Seite - Microsoft empfiehlt ab XP folgende Vorgehensweise:

Delphi-Quellcode:
const
  SM_REMOTESESSION = $1000;

function IsRemoteSession: Boolean;
begin
  Result := GetSystemMetrics( SM_REMOTESESSION ) <> 0;
end;
Freundliche Grüße

arnold mueller 19. Feb 2007 12:24

Re: Terminalsitzung erkennen
 
Vielen Dank für die Antworten.

Der Weg über GetSystemMetrics ist schon mal nicht schlecht. Eine allgemeine Aussage Terminalsitzung ja/nein lässt sich damit tätigen, aber leider nicht, ob das Programm in einer Citrix-Umgebung läuft. Ein anderer Tipp bezog sich auf die Umgebungsvariablen, daher sieht meine Implementation jetzt so aus:

Delphi-Quellcode:
const
  ENVIRONMENT_VARIABLENAME = 'SESSIONNAME';

function IsICASession: boolean;
var Sessionname: string;
begin
  SetLength(Sessionname, 8 * 1024);
  SetLength(Sessionname,
            Windows.GetEnvironmentVariable(PChar(ENVIRONMENT_VARIABLENAME),
                                           PChar(Sessionname),
                                           Length(Sessionname)));
  result := Pos('ICA-', Uppercase(Sessionname)) <> 0;
end;

Gruß,
Arno


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz