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.exeTeamViewer には、 Winlogon、Default、および Screensaver の下でマウスとキーボードを制御できるという名前のプロセスがあることに気付きました。それはどのように行うのですか?
私の質問を解決する方法を理解するのに役立つコードを提供できますか?
アプリケーションで既定のデスクトップと Winlogon デスクトップを切り替える方法を知りたい**。そのため、セキュリティで保護されたデスクトップでマウスとキーボードを制御できますwinlogon.exe。