Frage

Verzeihen Sie mir wohl die falsche Bezeichnung für diese „Anwendungsmodus“ verwendet wird.

Unsere Anwendung hat ein Problem beim Start, dass es keine Taskleiste Symbol wird angezeigt, bis das Hauptfenster nach oben ist, auch wenn es geladen Fortschritt Fenster, Anmelde-Fenster, etc. auf dem Bildschirm davor.

Wir ändern den Code dieses Problem zu beheben, aber leider dieses Update, wenn die App durch citrix ausgeführt wird, zeigt nun zwei Symbole, eine nur mit dem Symbol und ohne Text.

Gibt es eine Möglichkeit für mich zu erkennen, dass die Anwendung durch citrix läuft? Ich weiß es nicht die richtige Bezeichnung für diese, sondern nur das App-Fenster wird auf dem Benutzer-Desktop gebracht, nicht die ganze Remote-Desktop.

Wenn es darauf ankommt, wird die App in Delphi geschrieben.

War es hilfreich?

Lösung

genau nicht sicher, wie dies in delphi zu tun, aber wenn Sie den user32.dll rufen können, und rufen Sie die Funktion:

if (GetSystemMetrics(SM_REMOTESESSION) != 0)
{
   // We are in a remote session
}

Dies sollte Ihnen sagen, wenn Sie in einer Citrix oder Terminaldienste-Umgebung ausgeführt werden. SM_REMOTESESSION ist wie folgt definiert:

#define SM_REMOTESESSION        0x1000

Weitere Informationen über die GetSystemMetrics api hier: Link zu Msdn

Bearbeiten Die folgende Seite beschreibt, wie genau in delphi die oben zu tun. Was funktioniert für Terminaldienste sollten auch für Citrix arbeiten:

Ist Ihre Delphi Anwendung unter Terminaldienste als Remote-Session

Andere Tipps

Dies funktioniert für mich:

return System.Windows.Forms.SystemInformation.TerminalServerSession;

Eine Randnotiz für die Neugierigen: Die Lösung von „open-collar“ vorgeschlagen wird, ist nur ein .NET-Wrapper für die von John Sibly gegebenen. Sie sollen das gleiche Ergebnis in jedem Fall zurück. Ich bestätigte dies, indem die System.Windows.Forms.SystemInformation Klasse zu demontieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top