当前位置:  开发笔记 > 开发工具 > 正文

检测Citrix"应用模式"?

如何解决《检测Citrix"应用模式"?》经验,为你挑选了3个好方法。

原谅我可能在这个"应用模式"中使用了错误的术语.

我们的应用程序在启动时遇到问题,即在主窗口启动之前它没有显示任务栏图标,即使在此之前屏幕上有加载进度窗口,登录窗口等.

我们更改代码来修复此问题,但不幸的是,此修复程序在通过Citrix运行应用程序时,现在显示两个图标,一个只有图标而没有文本.

有没有办法让我检测到应用程序是通过Citrix运行的?我不知道正确的术语,但只有应用程序窗口被带到用户桌面,而不是整个远程桌面.

如果重要,该应用程序是用Delphi编写的.



1> John Sibly..:

不确定如何在delphi中执行此操作,但如果您可以调用user32.dll,并调用该函数:

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

这应该告诉您是否在Citrix或终端服务环境中运行.SM_REMOTESESSION定义为:

#define SM_REMOTESESSION        0x1000

有关GetSystemMetrics api的更多信息: 链接到msdn

编辑 以下页面描述了如何在delphi中完成上述操作.适用于终端服务的内容也适用于Citrix:

您的Delphi应用程序是否在终端服务下作为远程会话运行



2> open-collar..:

这对我有用:

return System.Windows.Forms.SystemInformation.TerminalServerSession;



3> PeterAllenWe..:

好奇的旁注:"open-collar"提出的解决方案只是John Sibly给出的.NET包装器.他们应该在每种情况下返回相同的结果.我通过反汇编System.Windows.Forms.SystemInformation类来确认这一点.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有