我在 .NET 2.0 和 XP 上有一个 C# WinForm 应用程序。还有一个 UltraVNC 服务器运行在与我的应用程序相同的 PC 上。用户可以在 PC 上本地访问应用程序,也可以通过 UltraVNC 服务器远程访问应用程序。
当应用程序中的某些文本框收到击键时,应用程序想知道击键是来自本地键盘还是来自 UltraVNC 服务器。这可能吗?鼠标点击也是同样的问题。
它不会区分击键,但您可以通过以下方式检测 RDP 会话:
System.Windows.Forms.SystemInformation.TerminalServerSession
通过设置低级键盘挂钩,您可以检查事件中的 LLKHF_INJECTED 标志。如果设置了此标志,则按键已被其他应用程序(即 Teamviewer、VNC 服务器或其他使用 SendInput() 或已弃用的 keybd_event() 的应用程序)注入。否则,它可能来自可靠来源(键盘驱动程序或 Microsoft 远程桌面会话)。请参阅MSDN以了解有关此标志的更多信息。