gpt4 book ai didi

.NET 认为屏幕的顺序不同于 Windows 控制面板 |显示 |屏幕分辨率

转载 作者:可可西里 更新时间:2023-11-01 10:48:31 25 4
gpt4 key购买 nike

我昨晚在一台运行 Windows 7 Embedded Standard 64 位且连接了 2 个显示器的 PC 上看到了一件奇怪的事情。 “显示分辨率”对话框将显示器显示为显示 1 和显示 2(从左到右)。当我运行我编写的使用两个屏幕的程序时,我在显示器 1 上预期的输出显示在最右侧的显示器上,而我在显示器 2 上预期的输出显示在最左侧的显示器上。

在这里和 Google 上花了一些时间,最后使用我发现的一些代码创建了一个显示 System.Windows.Forms.Screen.AllScreens 内容的控制台应用程序:

// For each screen, add the screen properties to a list box.
foreach (var screen in System.Windows.Forms.Screen.AllScreens)
{
Console.WriteLine("Device Name: " + screen.DeviceName);
Console.WriteLine("Bounds: " +
screen.Bounds.ToString());
Console.WriteLine("Type: " +
screen.GetType().ToString());
Console.WriteLine("Working Area: " +
screen.WorkingArea.ToString());
Console.WriteLine("Primary Screen: " +
screen.Primary.ToString());
}

在一台测试机器上运行它并得到了我预期的结果——AllScreens 顺序与 DIsplay Resolution 对话框顺序相匹配。

但是在有问题的机器上,上面代码的输出结果是相反的。 DISPLAY1在第二个屏幕的位置(最右边),DISPLAY2在最左边的屏幕。

这真的很奇怪。因为这没有使用我的程序,所以它是 .NET 内部的东西。相同的代码在其他类似的机器上工作,所以我不认为这是一个普遍的问题,而是一个孤立于这台机器的问题。我尝试了更多搜索类似问题,但一无所获,可能是由于搜索词(监视器、屏幕、.NET 都匹配很多与此问题无关的项目)。

有没有人以前见过这种情况,最好知道如何解决它?重新安装 .NET 4 包没有帮助。在“显示分辨率”对话框中更改位置,然后再将它们改回来也无济于事,即使在两者之间重新启动也是如此。

谢谢。

最佳答案

AllScreens 属性是通过 EnumDisplayMonitors 填充的功能。

EnumDisplayMonitors 的文档没有说明它返回监视器的顺序,因此可以推断它是一个实现细节,可以从操作系统版本到操作系统版本。

关于.NET 认为屏幕的顺序不同于 Windows 控制面板 |显示 |屏幕分辨率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13979118/

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