使用批处理文件来控制监视器位置?

使用批处理文件来控制监视器位置?

Windows 10 有一种方法可以根据多台显示器的物理顺序自定义显示设置,如果您还不知道,在下面的图片中您将明白我的意思。我想使用批处理文件或其他程序在下面的两个显示器顺序之间切换。我四处寻找,找不到有关此的任何信息。我​​希望批处理文件/程序在这两个设置之间切换:

监控顺序从左到右 2-1-3

监控顺序从左到右 3-2-1

如果您发现任何能够通过单击按钮完成此操作的程序,请链接给我。

背景:我玩一款名为《反恐精英:全球攻势》(CSGO)的游戏。我以 1280x1024 的分辨率运行游戏,该分辨率拉伸到 1920x1080 显示器上,该显示器位于我的 3 显示器设置的左侧。以低于我通常运行显示器的分辨率运行游戏会导致其他显示器上的窗口发生位移以补偿丢失的空间。解决此现象的唯一方法似乎是将游戏显示器放在设置的右侧,我无法将其物理移动到那里。这意味着我的鼠标在显示器之间移动的方式在物理上不正确,我希望它是正确的。

这张图片解释得更好 ^

答案1

最后终于弄明白了柯蒂斯。 我用了显示变换器让显示发生变化。批处理文件调用

我编写了一个 python 脚本,它可以生成两个批处理文件,并根据 state.txt 中的数字决定运行哪个文件。

    #matthew blaire
    #6/29/2016
    import os
    from subprocess import call

    userpath = os.path.expanduser("~/Documents")
    filepath = userpath + "/csgo monitor changer"
    normalpath = filepath + "/normal.bat"
    statepath = filepath + "/state.txt"
    csgopath = filepath + "/csgo.bat"
    try:
            ProgramFilesPath = os.path.expandvars("%PROGRAMFILES(X86)%")
    except:
            ProgramFilesPath = os.path.expandvars("%PROGRAMFILES%")
    ProgramFilesPath = ProgramFilesPath + "\\12noon Display Changer\\dc64cmd.exe\""

    if not os.path.exists(filepath): #checks if the filepath exists
            os.makedirs(filepath) #makes it if it doesn't exist already, also makes the files below if they don't already exist

            state = open(statepath, "w")
            state.write("0")
            state.close()

            csgo = open(csgopath, "w")
            csgo.write("\"" + ProgramFilesPath + " -monitor=\"\\\\.\\DISPLAY3\" -more -lx=-1920\n")
            csgo.write("\"" + ProgramFilesPath + " -monitor=\"\\\\.\\DISPLAY2\" -apply -lx=-3840\n")
            csgo.close()

            normal = open(normalpath, "w")
            normal.write("\"" + ProgramFilesPath + " -monitor=\"\\\\.\\DISPLAY2\" -more -lx=1920\n")
            normal.write("\"" + ProgramFilesPath + " -monitor=\"\\\\.\\DISPLAY3\" -apply -lx=3840\n")
            normal.close()

    state = open(statepath, "r")
    if state.read() == "0":
            state.close()
            state = open(statepath, "w")
            call(normalpath)
            state.write("1")

    else:
            state.close()
            state = open(statepath, "w")
            call(csgopath)
            state.write("0")
    state.close()

批处理脚本:

csgo.bat:

"C:\Program Files (x86)\12noon Display Changer\dc64cmd.exe" -monitor="\\.\DISPLAY3" -more -lx=-1920
"C:\Program Files (x86)\12noon Display Changer\dc64cmd.exe" -monitor="\\.\DISPLAY2" -apply -lx=-3840

正常.bat:

"C:\Program Files (x86)\12noon Display Changer\dc64cmd.exe" -monitor="\\.\DISPLAY2" -more -lx=1920
"C:\Program Files (x86)\12noon Display Changer\dc64cmd.exe" -monitor="\\.\DISPLAY3" -apply -lx=3840

状态.txt:

0 or 1 here

答案2

您可以使用显示器更换器执行此操作这里。您将需要查看-左 | -右 | -上 | -下 | -上方 | -下方参数。

我从一个类似的问题中得到了这个答案:在 Windows 7 上通过批处理/命令行更改显示排列如果它不起作用,您可能需要研究其他答案。

相关内容