Windows 7 (x64) および Windows 8 (x64) の C++ でTeamViewerのようなリモート デスクトップ アプリケーションを作成しています。
1.何が私を行き詰まらせたのか
SendInput() を使用して、マウス入力とキーボード入力を実装しました。プロセスが下で実行されたときに SendInput() が完全に機能することがわかりましたwinsta0\desktop
。しかし、ユーザーがコンピューターをロックしたり、スクリーンセーバーが起動したりした後は、機能しませんでした。
でプロセスを実行するとwinsta0\winlogon
、 ではSendInput()
動作しませんwinsta0\default
。
2.試したこと
SetThreadDesktop() を使用してプロセスを から に切り替えようとしwinsta0\desktop
ましwinsta0\winlogon
たが、エラー 170: "要求されたリソースは使用中です" が発生し、スタックしました。
3. 知りたいこと
TeamViewer_Desktop.exe
TeamViewer には、 Winlogon、Default、および Screensaver の下でマウスとキーボードを制御できるという名前のプロセスがあることに気付きました。それはどのように行うのですか?
私の質問を解決する方法を理解するのに役立つコードを提供できますか?
アプリケーションで既定のデスクトップと Winlogon デスクトップを切り替える方法を知りたい**。そのため、セキュリティで保護されたデスクトップでマウスとキーボードを制御できますwinlogon.exe
。