Как приложение .NET WinForm отличает локальное нажатие клавиши и одно от Ultra VNC-сервера? - PullRequest
0 голосов
/ 05 декабря 2010

У меня есть приложение C # WinForm в .NET 2.0 и XP.Существует также сервер UltraVNC, работающий на том же компьютере, что и мое приложение.Пользователь может получить доступ к приложению либо локально на ПК, либо удаленно через сервер UltraVNC.

Когда некоторые текстовые поля в приложении получают нажатие клавиши, приложение хотело бы знать, происходит ли нажатие клавиши с локальной клавиатуры или ссервер UltraVNC.Это возможно?Также тот же вопрос для щелчков мышью.

Ответы [ 2 ]

0 голосов
/ 06 января 2019

Установив низкоуровневую клавиатуру, вы можете проверить наличие флага LLKHF_INJECTED в событии. Если этот флаг установлен, то нажатие клавиши было введено другим приложением (то есть Teamviewer, VNC-серверами или другими приложениями, использующими SendInput () или устаревший keybd_event ()). Кроме того, это, вероятно, из надежного источника (драйвер клавиатуры или сеанс удаленного рабочего стола Microsoft). Пожалуйста, обратитесь к MSDN , чтобы узнать больше об этом флаге.

0 голосов
/ 05 декабря 2010

Он не различает нажатия клавиш, но вы можете обнаружить сеанс RDP с помощью:

System.Windows.Forms.SystemInformation.TerminalServerSession
...