首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何判断我的应用程序是否正在RDP会话中运行

如何判断我的应用程序是否正在RDP会话中运行
EN

Stack Overflow用户
提问于 2008-11-17 11:56:41
回答 3查看 8.2K关注 0票数 18

我有一个.net winforms应用程序,它有一些动画效果,淡入和滚动动画等。这些工作很好,但如果我在一个远程桌面协议会话,动画开始格栅。

有人能建议一种方法来确定应用程序是否正在RDP会话中运行,这样我就可以在这种情况下关闭效果吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-11-17 12:29:09

假设您至少在使用.NET Framework2.0,则不需要使用P/Invoke:只需检查System.Windows.Forms.SystemInformation.TerminalServerSession (MSDN.

票数 20
EN

Stack Overflow用户

发布于 2008-12-16 17:59:57

除了进行初始检查以查看桌面是否在RDP会话中运行之外,您可能还希望处理ap正在运行时远程会话已连接或断开的情况。您可以在控制台会话上运行一个应用程序,然后有人可以启动到控制台的RDP连接。除非您的应用程序定期调用GetSystemMetrics,否则它将假定它不是作为终端服务会话运行的。

您可以让您的应用程序通过WTSRegisterSessionNotification注册会话更新通知。这将允许您的应用程序在远程连接已打开或关闭时立即通知您的应用程序在桌面会话下运行。有关C#代码的一些示例,请参阅here

有关使用WTSRegisterSessionNotification的一些不错的Delphi Win32示例代码,请参阅此page

票数 3
EN

Stack Overflow用户

发布于 2008-11-17 12:06:53

使用user32.dll中的GetSystemMetrics()函数。使用PInvoke调用它。以下是第一个链接提供的示例代码。第二个链接告诉您如何在.NET中调用它。

代码语言:javascript
复制
 BOOL IsRemoteSession(void){
      return GetSystemMetrics( SM_REMOTESESSION );
   }

完整代码:

代码语言:javascript
复制
[DllImport("User32.dll")]
static extern Boolean IsRemoteSession()
{
 return GetSystemMetrics ( SM_REMOTESESSION);
}

还有SystemInformation.TerminalServerSession属性,它确定客户端是否连接到终端服务器会话。MSDN的code provided很广泛,所以我在这里不再重复。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/295415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档