gpt4 book ai didi

c++ - 如何在不考虑 session 的情况下获取显示设备信息?

转载 作者:搜寻专家 更新时间:2023-10-31 01:53:07 25 4
gpt4 key购买 nike

我使用 EnumDisplayDevices这让我获得有关当前 session 中显示设备的信息。

但无论 session 如何,我都需要有关显示设备的信息。因为我创建了一些 Windows 服务应用程序(系统进程)。

有人知道这段代码的替代方案吗:

vncDesktop::GetNrMonitors()
{
if(OSversion()==3 || OSversion()==5) return 1;
int i;
int j=0;

helper::DynamicFn<pEnumDisplayDevices> pd("USER32","EnumDisplayDevicesA"); // it's EnumDisplayDevices function

if (pd.isValid())
{
DISPLAY_DEVICE dd;
ZeroMemory(&dd, sizeof(dd));
dd.cb = sizeof(dd);
for (i=0; (*pd)(NULL, i, &dd, 0); i++)
{
if (dd.StateFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP)
if (!(dd.StateFlags & DISPLAY_DEVICE_MIRRORING_DRIVER))j++;
}
}
return j;
}

提前致谢!

最佳答案

来源如下

嗯,这不起作用的原因是 session 0 没有连接到控制台。更重要的是,因为在 Windows 7 上每个用户有更多的视频设置,所以假设您从一个用户那里得到的任何东西甚至适用于另一个用户是不好的。

  • 您也可以尝试在注册表中查找显示器。

    显示器应存放在这里:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY

    显示监视器的类 GUID 是 {4D36E96E-E325-11CE-BFC1-08002BE10318}。您可以尝试使用 Setup API(SetupDiGetClassDevs, ...)在系统中找到监视器

  • 如果您专门为 Win7 及更高版本编写代码,则可能需要查看 QueryDisplayConfig 和相关函数。


来源

关于c++ - 如何在不考虑 session 的情况下获取显示设备信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11555045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com