.NET WinForm应用程序如何区分本地击键和Ultra VNC服务器之间的击键?

时间:2010-12-05 03:11:01

标签: .net vnc keystroke

我在.NET 2.0和XP上有一个C#WinForm应用程序。还有一台UltraVNC服务器与我的应用程序在同一台PC上运行。用户可以在PC本地访问应用程序,也可以通过UltraVNC服务器远程访问应用程序。

当应用程序中的某些文本框收到击键时,应用程序想知道击键是来自本地键盘还是来自UltraVNC服务器。这可能吗?鼠标点击也是同样的问题。

2 个答案:

答案 0 :(得分:0)

它不会消除击键,但您可以通过以下方式检测RDP会话:

System.Windows.Forms.SystemInformation.TerminalServerSession

答案 1 :(得分:0)

通过设置低级键盘挂钩,您可以在事件中检查LLKHF_INJECTED标志。如果设置了此标志,则其他应用程序(例如,Teamviewer,VNC服务器或其他使用SendInput()或已弃用的keybd_event()的应用程序)已注入了击键。另外,它可能来自可靠的来源(键盘驱动程序或Microsoft远程桌面会话)。请参阅MSDN以了解有关此标志的更多信息。