Leo*_*eon 10 c++ windows winlogon
我正在Windows 7(x64)和Windows 8(x64)上用C++ 编写远程桌面应用程序,如TeamViewer.
是什么让我陷入困境
我已经使用SendInput()实现了鼠标输入和键盘输入.我发现当进程运行时SendInput()工作正常winsta0\desktop.但是在用户锁定计算机或启动屏幕保护程序后,它无法正常工作.
如果我在下面运行该过程winsta0\winlogon,SendInput()则无法正常工作winsta0\default.
2.我尝试过的
我已经尝试使用SetThreadDesktop()将进程从切换winsta0\desktop到winsta0\winlogon,但我收到错误170:"请求的资源正在使用中",我坚持了下来.
3.我想知道什么
我注意到TeamViewer有一个名为的进程TeamViewer_Desktop.exe,可以在Winlogon,Default和Screensaver下控制鼠标和键盘.它是如何做到的?
你能提供代码来帮助我理解如何解决我的问题吗?
我想知道**如何在默认桌面和Winlogon桌面之间切换应用程序.因此,我可以在安全的桌面上控制鼠标和键盘,而无需在其下创建另一个进程winlogon.exe.
你做对了:SetThreadDesktop是对的.该错误告诉您在当前桌面上打开了一些资源,例如窗口,这会阻止您切换.如果你曾尝试制作一个最小的测试用例(就像你在这里提问时要做的那样!)你会发现这一点.
删除程序的一部分,直到找到阻止您切换桌面的块.某些Windows API很讨厌并且阻止您切换桌面,因此需要在专用线程中调用.
| 归档时间: |
|
| 查看次数: |
7894 次 |
| 最近记录: |