2

我有一台带 VGA 端口和 HDMI 端口的笔记本电脑。因此,我可以在三个显示器之间切换最大。2个显示同时激活。

我试图找到一种使用 Windows API 或 .NET 框架以编程方式切换活动显示的方法。但这似乎是不可能的。根据 WWW 中的其他论坛帖子,这只能通过使用属于显卡的库来实现,例如“AMD 显示库”(ADL) 或用于 nVidia 设备的 NVAPI。

但是我想知道Windows如何能够在系统设置中提供切换显示器的设置,虽然没有编程接口。Windows 是否也使用 ADL/NVAPI?

编辑

正如 Deanna 在评论中指出的那样,可能没有记录在案的用于切换活动显示器的 API。显示驱动程序开发人员如何知道如何开发他们的驱动程序?不公开这些东西的原因是什么?

4

1 回答 1

2

您应该能够使用EnumDisplayDevicesChangeDisplaySettingsEx传递CDS_SET_PRIMARY以选择要使用的监视器来执行此操作。这是否提供了我不知道的最佳界面。否则,您需要深入研究此处列出的多台显示器上的 WDDM 文档、 COM 文档或D3D 公开IViewHelper的用户模式显示配置 API 。

但是想知道windows怎么能在系统设置里提供切换显示器的设置,虽然没有编程接口

需要注意的是,在 Windows 下,显示驱动程序需要暴露某些功能,以实现 Windows 内核使用的低级 API,让内核轻松完成此类任务。

显示驱动程序开发人员如何知道如何开发他们的驱动程序?不公开这些东西的原因是什么?

他们会有专门的 DDK 可供他们使用*(这里 [ XDDM | WDDM ] 是关于编写显示驱动程序的 MSDN 文档)。轻松交换监视器输出所需的那种 API 可能并不公开,因为很少有人需要它,因此他们宁愿将时间和金钱花在修复常用部分的错误上。

*I would assume, though the public DDK has some ancient samples from 3dlabs for the implementation of display drivers, and the online docs are pretty comprehensive, but writing a full display driver is a major task, and would most likely need direct support from MS, which would probably need you to be an MS ISV or hardware partner.

于 2012-02-26T15:16:26.703 回答