我一整天都在思考这个话题。
我家里有两台电脑,一台是我自己的,一台是工作的——具体来说是一台笔记本电脑,我有 3 个横向配置的显示器。 我希望能够在不同的配置中使用我的所有 3 个显示器,而不受特定分辨率或刷新率的限制,而无需一遍又一遍地配置每个单独的显示器。理想情况下,通过键盘上的快捷键,使用 USB-HUB 来切换外围设备。
例如:
现在我想将显示器 #3 切换到 PC #2,而不切换其他 2 个显示器,理想情况下,此示例的每个配置都应该是可能的,并且如果我愿意,也可以立即切换所有显示器。
计划购买 KVM 切换器 - 在意识到它们有多贵之后,即使购买的不是 100% 可靠,我还是决定不买。更不用说我无法在大多数 KVM 切换器上运行 1440p@240hz 或 1080p@360hz,而且少数支持 2 台 PC 上的 3 个显示器的价格至少为 350 欧元,最高可达 800 欧元,评论听起来并不乐观。
在寻找 KVM 切换器时,我偶然发现了软件“ControlMyMonitor”,该软件只需调用简单的命令行即可实现这一切:“ControlMyMonitor.exe /SetValue “\.\DISPLAY2\Monitor0” 60 3”
经过一天的浏览,我很好奇如何在 C# 代码中调用 Windows API,特别是使用 dxva2.dll 方法获取和设置 VCP 代码功能
SetVCPFeature()
这里。
遗憾的是,我找不到任何与此相关的 nuGet 包,也找不到任何提供对我需要访问的 dxva2.dll 方法的简单访问的东西。也许可以完全从头开始编写并直接访问监视器?
到目前为止,我相信这是您为 C# 中的
SetVCPFeature()
方法编写外部方法的方式,以便能够在 C# 中从 dxva2.dll 使用它。
[DllImport("dxva2.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool SetVCPFeature(Handle hMonitor, byte bVCPCode, UInt32 dwNewValue);
但是我如何知道如何编写 Handle 类以及 hMonitor 应该是什么,任何关于我应该从哪里开始了解有关 Windows API 的更多信息的指示将不胜感激。 我找不到很多关于 Windows API 的总体信息来真正理解它。