哪个注册表项或 Windows 文件决定了在多显示器环境中放置显示器的位置?

20 windows-registry windows-7 troubleshooting multiple-monitors

我有一台带有USB 转 VGA 适配器的笔记本电脑,它允许我向笔记本电脑添加第三台显示器(第二台显示器使用板载插槽)。

它在 Windows Vista 上运行良好——您可以进入 Windows 的显示设置,Windows 会识别第三台显示器并让您相应地拖动它。对于 Windows 7,Windows 的显示设置中实际上没有第三台显示器。驱动程序允许您显示到第三台显示器,但您不能移动它所在的位置。显示设置相对于我的其他两个设置错位(如果您将窗口拖到它上面,它们应该对齐时会在底部)。

我打电话给技术支持,他们说 Windows 7 还没有具有此功能的驱动程序。但这是我的预感。显示器的位置仍然与我在 Vista 上的位置有些相似,只是大约 500 像素左右。我认为某处有一个注册表项或驱动程序文件告诉这个监视器在哪里存在。如果我可以修改数字并将其向上移动 500 像素,那么它就在正确的位置,我不必等待 6 个月公司推出新驱动程序。

有任何想法吗?

小智 32

对于在 Windows 7 中寻找密钥的任何人,它位于以下文件夹之一中:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration\
Run Code Online (Sandbox Code Playgroud)

在每个子文件夹中查找Position.cxPosition.cy;您必须编辑十六进制字符串。

二进制/十进制/十六进制转换器:

http://www.mathsisfun.com/binary-decimal-hexadecimal-converter.html

  • 你怎么知道哪个配置是活动的? (3认同)
  • @Adisak 老问题,但对于仍在寻找此问题的任何人,这就是我所做的:右键单击 -> 导出配置节点(以防万一),将其保存在某处。删除每个子节点。退出窗口。重新登录。这将创建 1 个新项目,即当前/活动项目。 (2认同)

Ƭᴇc*_*007 10

查看中的各种键和文件夹

HKEY_CURRENT_CONFIG\System\CurrentControlSet\Control\Video
Run Code Online (Sandbox Code Playgroud)

特别是在最里面的MonXXXXXXX子文件夹中应该是Attach.RelativeXAttach.RelativeY值,它们是显示器相对于像素 0,0 的位置。

奇怪的是,当我在这里检查带有两个显示器的 Windows 7 机器时,它似乎没有显示第二个显示器。但是我的 XP 机器显示我的所有三个,所以你的里程可能会有所不同。

如果没有别的,这是一个开始的地方!

  • 你不能输入负值,Windows 不允许。在注册表的十六进制部分中,您可以输入数字和字母,而在十进制部分中,您只能输入数值。我发布的 40 亿数字确实有效并且持续存在,我只是不知道为什么。也许Windows中有某种代码意味着429496xxxx表示负数。最后 4 个数字与超过负数的像素位移量相关。 (2认同)

小智 5

从 4294967296 中减去您希望变为负数的金额,即可得到注册表所需的数字。即,4294967296 - 250 = 4294967046。

对于你们这些极客...

这里的烦恼是由于注册表编辑器不会将 32 位解释为无符号十进制整数或二进制数据的十六进制表示形式之外的任何内容。但是,当 Windows 在定位显示器时检索该二进制数据时,它会将其解释为有符号整数。为了让 Windows 知道 32 位有符号整数是负数,它将最后一位设置为 1(最左边),并将其余位反转。因此 -1 的二进制值为 11111111 11111111 11111111 11111111(十六进制:FF FF FF FF)。如果将其转换为无符号十进制整数(如注册表编辑器所做的那样),则会得到 4,294,967,295。因此,就我们的目的而言,0 等于 4,294,967,296,您可以简单地将负数添加到其中,以获得所需的无符号十进制整数,注册表编辑器以二进制形式保存该整数,并且系统稍后将其解释为带负号的整数。