mar*_*her 9 c++ windows winapi shellexecute windows-shell
我有一个用C++编写的自定义应用程序,它控制连接到嵌入式系统的监视器上的分辨率和其他设置.有时系统无头启动并通过VNC运行,但可以在以后插入监视器(启动后).如果发生这种情况,则在启用监视器之前,监视器不会输入视频.我发现调用"displayswitch/clone"会启动监视器,但我需要知道监视器何时连接.我有一个每5秒运行一次的计时器并查找显示器,但是我需要一些API调用来告诉我显示器是否已连接.
这里有一些psudocode来描述我所追求的(当计时器每5秒到期时执行什么).
if(If monitor connected)
{
ShellExecute("displayswitch.exe /clone);
}else
{
//Do Nothing
}
Run Code Online (Sandbox Code Playgroud)
我试图GetSystemMetrics(SM_CMONITORS)返回监视器的数量,但如果监视器已连接,则返回1.还有其他想法吗?
谢谢!
尝试下面的代码
BOOL IsDisplayConnected(int displayIndex = 0)
{
DISPLAY_DEVICE device;
device.cb = sizeof(DISPLAY_DEVICE);
return EnumDisplayDevices(NULL, displayIndex, &device, 0);
}
Run Code Online (Sandbox Code Playgroud)
true如果 Windows 通过索引(也称为标识)识别显示设备0(这是显示控制面板内部使用的),则会返回此信息。否则,它将返回 false false。因此,通过检查第一个可能的索引(我将其标记为默认参数),您可以查明是否有任何显示设备已连接(或至少由 Windows 识别,这本质上就是您要查找的内容)。
| 归档时间: |
|
| 查看次数: |
1794 次 |
| 最近记录: |