Jak przełączyć proces między pulpitem domyślnym a pulpitem Winlogon?

Piszę aplikację na pulpicie zdalnym, taką jakTeamViewer w C ++ na Windows 7 (x64) i Windows 8 (x64).

1. Co mnie utknęło

Zaimplementowałem wejście myszy i wejście klawiatury za pomocą SendInput (). Odkryłem, że SendInput () działał idealnie, gdy proces był uruchamianywinsta0\desktop. Ale gdy użytkownik zablokował komputer lub uruchomił wygaszacz ekranu, nie działał.

Jeśli uruchomię proces podwinsta0\winlogon, SendInput() nie działa podwinsta0\default.

2. Co próbowałem

Próbowałem użyć SetThreadDesktop (), aby przełączyć proceswinsta0\desktop dowinsta0\winlogon, ale dostałem błąd 170: „Żądany zasób jest w użyciu” i utknąłem.

3. Co chcę wiedzieć

Zauważyłem, że TeamViewer ma nazwę procesuTeamViewer_Desktop.exe które mogą sterować myszą i klawiaturą w Winlogon, Domyślne i Wygaszacz ekranu. Jak to robi?

Czy możesz podać kod, który pomoże mi zrozumieć, jak rozwiązać moje pytanie?

Chcę wiedzieć **, w jaki sposób mogę przełączać aplikację między pulpitem domyślnym a pulpitem Winlogon. Dzięki temu mogę sterować myszą i klawiaturą na zabezpieczonym pulpicie bez tworzenia kolejnego procesu działającego w tym trybiewinlogon.exe.

questionAnswers(2)

yourAnswerToTheQuestion