Как скрыть самое верхнее окно, когда сеанс rdp активен - PullRequest
1 голос
/ 10 октября 2019

Я написал WinNET-приложение .NET и установил для свойства TopMost значение true. Но я обнаружил, что когда я вхожу в удаленный рабочий стол, окно все еще показывает.

Как определить, находится ли я в удаленном рабочем месте (удаленный рабочий стол активен, печатает / работает на удаленном рабочем столе), используя .netфреймворк? Я использую .NET Framework 4.8 и удаленный доступ к Windows 10 1809 из Windows 10 1903

1 Ответ

0 голосов
/ 10 октября 2019

Вам, вероятно, придется вызвать Windows API с помощью P / Invoke, чтобы добиться этого. Я мог бы представить, что он работает примерно так:

  1. Отслеживать событие EVENT_SYSTEM_FOREGROUND.

    Окно переднего плана изменилось. Система отправляет это событие, даже если переднее окно изменилось на другое окно в том же потоке. [Источник]

  2. Когда окно переднего плана изменилось, проверьте, принадлежит ли новое окно переднего плана приложению RDP. Вы можете сделать это различными способами, например, проверив, к какому процессу относится окно (я предполагаю, что это будет mstsc.exe в Windows, но может быть ошибочным). Еще проще (но грязно и подвержено ошибкам) ​​проверить заголовок окна.
  3. Если приложение RDP находится на переднем плане, отодвиньте приложение позади него.

ВотХорошая отправная точка для реализации того, что я объяснил выше: Обнаружение изменения активного окна с использованием C # без опроса .

...