在XP系统下如何检测新接入的显示器,并将其设置为扩展模式?

发布于 2022-08-24 10:59:56 字数 708 浏览 26 评论 0

目前在做一个软件,运行软件后,再同一张显卡上再接入一个显示器,即刻将其设置为屏幕扩展模式。
目前在检测新接入显示器时卡住了。如果显示器在开机时没有接入,开机后接入的话,程式会无法检测到该显示器。
我检测的方法是通过EnumDisplayDevices来枚举显示器,如果检测到的显示器信息DeviceID(查到该值表示所接入显卡ID)为空。就跳过。具体代码如下:

	DISPLAY_DEVICE	m_dd[5];
	DEVMODE		m_dv[5];
	int n = 0, i = 0;
	do
	{
		m_dv[i].dmFields = DM_BITSPERPEL | DM_POSITION | DM_DISPLAYFREQUENCY | DM_DISPLAYFLAGS;    
		flag = EnumDisplayDevices(NULL, i, &m_dd[n], 0);
		if (flag){ i++; }else{ continue; }
		if (_tcslen(m_dd[n].DeviceID) == 0) { continue; }//如果没有接入显卡,就跳过
		EnumDisplaySettings(m_dd[i].DeviceName, ENUM_CURRENT_SETTINGS, &m_dv[n]);
		n++;
	} while (flag && n < 5);

通过代码调试,发现并没有检测到新接入的显示器。但是,在系统的设备管理器中是可以看到该设备的。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文