在 Windows10/11 上的二合一笔记本电脑上,在平板电脑模式和台式机模式下自动切换不同的显示缩放比例

在 Windows10/11 上的二合一笔记本电脑上,在平板电脑模式和台式机模式下自动切换不同的显示缩放比例

在二合一笔记本电脑/平板电脑中,Windows 10 和 11 可以通过板载硬件传感器识别显示屏何时折叠,从而触发平板电脑转换。

我希望我的显示缩放比例为 200%桌面模式225% 为平板模式使得 UI 元素在触摸屏上易于点击。

我正在寻找一个程序/脚本/系统调整,可以自动设置显示缩放比例取决于当前模式。

答案1

我能够编写一个具有此功能的 C++ 程序,它的工作效果与我预期的一样完美。我使用了开源工具设置DPI在前面的答案中提到过设置主显示器的 DPI。 用法: SetDPI.exe [monitor no] [DPI scale value]

#include <Windows.h>
#include <cstdlib>

bool isTabletMode() {
    return GetSystemMetrics(SM_CONVERTIBLESLATEMODE) == 0;
}
void setTabletScaling() {
    WinExec("C:\\Programs\\SetDpi.exe 1 225", SW_HIDE);
}
void setDesktopScaling() {
    WinExec("C:\\Programs\\SetDpi.exe 1 200", SW_HIDE);
}
int main() {
    bool currentMode, lastMode = isTabletMode();
    while (true) {
        currentMode = isTabletMode();
        if (currentMode && !lastMode) {
            setTabletScaling();
        } 
        else if (!currentMode && lastMode) {
            setDesktopScaling();
        }
        lastMode = currentMode;
        Sleep(5000);
    }
    
    return 0;
}

答案2

这是一个使用免费的解决方案 自动热键

以下示例脚本将循环,每秒检查一次模式的注册表项,并相应地设置 DPI。由于我没有使用平板电脑,因此无法完全测试该脚本。

它使用开源项目 设置DPI。您应该从发布页面下载该实用程序。在我的测试脚本中,它位于C:\Temp\SetDpi.exe

我还假设这指的是您的主显示器,即第一个显示器,因此编号为1

#Persistent
lastmode = -1
SetTimer, checkmode, 1000
return

checkmode:
RegRead, mode, HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ImmersiveShell, TabletMode
if mode = lastmode
  return
if mode = 0
  Run, C:\Temp\SetDpi.exe 1 200, , Hide    ; desktop mode
else
  Run, C:\Temp\SetDpi.exe 1 225, , Hide    ; tablet mode
lastmode = mode
return

如果您更喜欢使用热键而不是循环来更改 DPI,请使用以下简化脚本,其中 F11 将 DPI 设置为 200,F12 设置为 225:

F11::Run, C:\Temp\SetDpi.exe 1 200, , Hide
F12::Run, C:\Temp\SetDpi.exe 1 225, , Hide

安装 AutoHotKey 后,将上述文本放入一个.ahk文件中并双击进行测试。您可以通过右键单击托盘栏中的绿色 H 图标并选择退出来停止脚本。要让它在登录时运行,请将其放在 的启动组中
C:\Users\USER-NAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

有用的 AutoHotkey 文档:

相关内容