我一直在开发一个作为 Windows 服务运行的远程桌面应用程序,我想知道如何将应用程序连接到特定 session ,并允许它以位图形式检索用户桌面,设置光标位置,将鼠标点击和键盘输入发送到控制台 session 。
最佳答案
您需要使用 SetThreadDesktop()
将服务中线程的上下文更改为用户的桌面。
SetThreadDesktop()
将桌面句柄作为第一个参数;要获取该句柄,请使用EnumDesktops()
.EnumDesktops()
将窗口站的句柄作为第一个参数;要获取该句柄,请使用EnumWindowStations()
要了解 Window Stations 和 Desktops 发生了什么,请尝试阅读 this overview来自MSDN。
最后,请谨慎使用此技术。与用户桌面交互的更高权限进程(即服务)是 shatter attacks 的基础.
关于c++ - 如何将 Windows 服务连接到控制台 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4359436/