在二合一笔记本电脑/平板电脑中,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 文档: