c++ - 作为 Windows 服务运行时,如何获取事件监视器的数量? C++

标签 c++ windows-services multiple-monitors

当 exe 作为 Windows 服务运行时,我在检索事件监视器的数量时遇到了问题。我尝试使用 EnumDisplayDevices 和 GetSystemMetrics(SM_CMONITROS) 来获取监视器的数量,这两种方法在以控制台模式运行时(意味着由用户启动)会给我正确的监视器数量,但是当我将 exe 注册为服务并通过windows服务运行,结果报告的监视器数量不正确。

作为 Windows 服务运行时,是否有任何其他方法可以确定事件监视器的数量?或者任何其他解决方法?提前致谢!

最佳答案

出于安全原因,不允许服务与用户桌面交互。因此,他们在与物理桌面无关的虚拟桌面中运行。您可以尝试以下操作。在服务管理器的服务列表中。右键单击您的服务,转到属性并在那里“登录”。您可以在那里更改服务正在使用的帐户。使用“本地系统帐户”,您可以勾选“允许服务与桌面交互”。我自己没有尝试过。但是为了交互服务必须获得对“真实”桌面的访问权限,因此监视器数量应该是正确的。

关于c++ - 作为 Windows 服务运行时,如何获取事件监视器的数量? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18617048/

相关文章:

session - 是否可以看到系统的用户桌面?如何从另一个 session 中桌面您的用户?

command-line-interface - 分别截取多个显示器的命令行工具

c++ - Eclipse CDT 5.x 和 cmake 2.6.x

c++ - 人体部位 HAAR 级联分类器

c++ - [C++] 在此代码之前不存在的析构函数中抛出的内存错误。尝试制作一个新的动态数组并填充它

.net - Windows 服务中的 "net use"命令

.net - 调度Windows消息时.NET Windows服务崩溃

c# - .NET 中显示数量发生变化时的事件?

c# - 是否有所有虚拟显示的截图方法?

c++ - 在 C++ 上获取 radio 组的值