Piszę aplikację zdalnego pulpitu, taką jak TeamViewer w C++ na Windows 7 (x64) i Windows 8 (x64).Jak przełączyć proces między domyślnym pulpitem a pulpitem Winlogon?
1. Co sprawiło, że zatrzymany
I wprowadziły wejście myszki i klawiatury przy użyciu SendInput(). Zauważyłem, że SendInput() działał idealnie, gdy proces był uruchamiany pod numerem winsta0\desktop
. Ale po tym, jak użytkownik zablokował komputer lub uruchomiono wygaszacz ekranu, nie zadziałało.
Jeśli uruchomię proces pod numerem winsta0\winlogon
, SendInput()
nie działa pod numerem winsta0\default
.
2. Jakie Próbowałem
Próbowałem, używając SetThreadDesktop(), aby przełączyć się proces od winsta0\desktop
do winsta0\winlogon
, ale mam błąd 170: „Żądane zasoby są w użyciu”, a ja stucked.
3. Co chcę wiedzieć
zauważyłem, że TeamViewer ma proces o nazwie TeamViewer_Desktop.exe
który może kontrolować myszki i klawiatury pod Winlogon, domyślnie i 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ę zmienić sposób przełączania aplikacji między domyślnym pulpitem a pulpitem Winlogon. Dzięki temu mogę sterować myszą i klawiaturą na zabezpieczonym pulpicie bez tworzenia kolejnego procesu działającego pod kontrolą winlogon.exe
.
Jeśli chcesz przykładowy kod, należy użyć jeden z projektów open source VNC. Pytanie o kod demo tutaj wymaga zbyt wiele. To pytanie jest zbyt szerokie. –
@DavidHeffernan Dziękuję za porady. Spróbuję przeczytać i znaleźć kod mojego pytania z projektów VNC o otwartym kodzie źródłowym. I zredagowałem moje pytanie i jasno je sformułowałem. – Leon