报应啊报应 发表于 2024-7-31 09:33

求助,有没有坛友会写bat,能实现开一个exe之前把系统缩放切换为100%,

exe运行结束后恢复125%吗?

谢谢,我不太会……

moekyo 发表于 2024-7-31 09:35

建议先问AI

posion 发表于 2024-7-31 09:39


问了AI,AI给了别的思路



强尼高达 发表于 2024-7-31 09:44

posion 发表于 2024-7-31 09:39
问了AI,AI给了别的思路

你这明明是AI思路如尿路……

GPT-4o脑子就正常多了



在 Windows 系统中,批处理文件(.bat)本身无法直接调整系统缩放设置。这些设置通常需要通过 Windows 的 API 或设置界面来修改。直接通过批处理文件进行这种操作是非常复杂的,并且可能涉及到使用额外的工具或脚本。

不过,你可以使用 PowerShell 脚本来实现你想要的功能,但即便如此,系统缩放设置并不容易被直接修改。因此,你需要借助其他工具或脚本来间接实现这个目标。以下是一个大致的思路和步骤:

1. **使用 PowerShell 脚本修改系统缩放设置**:
   - 调整系统缩放设置通常需要通过修改注册表或使用特定的命令行工具。请注意,这些操作可能需要管理员权限,并且修改注册表有一定的风险。

2. **运行目标程序**:
   - 通过脚本启动你希望运行的程序。

3. **还原系统缩放设置**:
   - 程序运行结束后,再次通过脚本将系统缩放设置还原到原来的值。

下面是一个示例的 PowerShell 脚本思路(注意,这只是一个示例,实际操作中可能需要更复杂的处理):

```powershell
# 备份当前缩放设置
$backupScale = (Get-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "LogPixels").LogPixels

# 将缩放设置更改为100%
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "LogPixels" -Value 96

# 运行你的程序
Start-Process "你的程序路径"

# 等待程序结束
Start-Sleep -Seconds 10 # 根据程序的实际运行时间调整

# 恢复缩放设置
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "LogPixels" -Value $backupScale
```

**注意事项:**
- 修改注册表和系统设置有风险,请确保在执行这些操作之前备份注册表或创建还原点。
- 更改系统缩放通常需要重新登录或重新启动计算机才能生效。
- 这个脚本可能不适用于所有版本的 Windows 或所有类型的程序,具体效果取决于系统配置和程序行为。

对于大多数用户而言,直接通过系统设置手动调整缩放可能是更安全和可靠的选择。

报应啊报应 发表于 2024-7-31 09:50

强尼高达 发表于 2024-7-31 09:44
你这明明是AI思路如尿路……

GPT-4o脑子就正常多了

谢谢强尼

—— 来自 Xiaomi M2007J3SC, Android 12上的 S1Next-鹅版 v2.5.4

蒜灵 发表于 2024-7-31 09:57

我怎么记得每个程序是可以单独设置缩放百分比的,你这是为啥要调整整个系统的缩放比例

烟萝 发表于 2024-7-31 09:58

为什么要这么搞?你直接给这个程度单独设置缩放比不就是了

有些老程序开百分比有BUG的时候调一下程序有限,再不行就固定缩放比

报应啊报应 发表于 2024-7-31 10:03

蒜灵 发表于 2024-7-31 09:57
我怎么记得每个程序是可以单独设置缩放百分比的,你这是为啥要调整整个系统的缩放比例 ...

我从兼容性那页进去没找到单独设置的地方啊……

—— 来自 Xiaomi M2007J3SC, Android 12上的 S1Next-鹅版 v2.5.4

lakii 发表于 2024-7-31 10:16


是不是说的这个?

lakii 发表于 2024-7-31 10:19

我记得可以在exe还是exe的快捷方式里设置运行参数,也许这也是个可行的方向?

烟萝 发表于 2024-7-31 10:29

更改高DPI设置,应用程序替代,这种一般就是100%了,与桌面设置的百分比分离。
很多游戏也能这么搞,在4K下面用1080P来玩游戏。

上面那个程序DPI可以自定义程序需要的百分比缩放

报应啊报应 发表于 2024-7-31 11:58

烟萝 发表于 2024-7-31 10:29
更改高DPI设置,应用程序替代,这种一般就是100%了,与桌面设置的百分比分离。
很多游戏也能这么搞,在4K下 ...

还有不只设置100的需求,所以发帖问的,谢谢坛友!

—— 来自 Xiaomi M2007J3SC, Android 12上的 S1Next-鹅版 v2.5.4

dvd6 发表于 2024-7-31 12:20

https://github.com/imniko/SetDPI
可以脚本配合这个软件,直接运行参数加dpi数值就能切换。它自带了一个autohotkey示例是用快捷键切换的,没研究过autohotkey能不能支持检测软件运行状态

夜语 发表于 2024-7-31 17:50

dvd6 发表于 2024-7-31 12:20
https://github.com/imniko/SetDPI
可以脚本配合这个软件,直接运行参数加dpi数值就能切换。它自带了一个au ...

除了一些类似chrome这样的会接管新实例的程序(很多,PS,notepad++等等)
还有一些启动和运行不是一个exe的程序....类似gpedit.msc
可以用runwait,一般情况没问题的


Run("SetDpi.exe 100")
RunWait("想要运行的程序路径");运行并等待此程序结束
Run("SetDpi.exe 125")

普通论坛用户 发表于 2024-7-31 18:57

强尼高达 发表于 2024-7-31 23:04

我今天试了displayfusion,里面能存两个不同的显示器配置,再设定触发器于指定程序打开的时候加载其中一个配置,程序关闭后加载另一个
我已经弄好了,一个16:10一个16:9两个配置,平时16:10,开指定游戏加载16:9,关游戏切回16:10,很好用就是切分辨率的时候需要点一下确认
只要存两个不同的配置一个125%一个100%,那么就是一样的操作了

绕指流光 发表于 2024-7-31 23:34

本帖最后由 绕指流光 于 2024-7-31 23:36 编辑

老眼昏花exe看成excel了,请无视


如果你纯为了excel的内容需要缩放(就是ctrl+滚轮能调整的工作簿sheet缩放,不涉及ribbon和菜单区域的按钮),可以尝试用VBA写个脚本放在workbook.open里面

—— 来自 鹅球 v3.0.87-alpha

慕容断月 发表于 2024-8-2 20:23

还是泥潭坛友厉害,类似需求我也有但极其罕见以至于可以忽略所以就没发帖,没想到这都能大概有解决思路

慕容断月 发表于 2024-8-2 20:25

另外参考本楼思路,lz要不要问问ai,看看让他们用python能不能写个实现这个功能的脚本?或许可以

报应啊报应 发表于 2024-8-3 11:50

慕容断月 发表于 2024-8-2 20:25
另外参考本楼思路,lz要不要问问ai,看看让他们用python能不能写个实现这个功能的脚本?或许可以 ...

4楼强尼那个不知道可以直接用吗,我暂时有事出差没法试

—— 来自 Xiaomi M2007J3SC, Android 12上的 S1Next-鹅版 v2.5.4

慕容断月 发表于 2024-8-3 12:33

报应啊报应 发表于 2024-8-3 11:50
4楼强尼那个不知道可以直接用吗,我暂时有事出差没法试

—— 来自 Xiaomi M2007J3SC, Android 12上的 S1 ...

我回头试试看,暂时也不方便

qazesz 发表于 2024-8-4 23:08

本帖最后由 qazesz 于 2024-8-4 23:13 编辑

烟萝 发表于 2024-7-31 10:29
更改高DPI设置,应用程序替代,这种一般就是100%了,与桌面设置的百分比分离。
很多游戏也能这么搞,在4K下 ...
程序不能在系统层面自定义dpi,只能与系统同步或者应用程序接管

慕容断月 发表于 2024-8-5 09:22

本帖最后由 慕容断月 于 2024-8-5 09:49 编辑

报应啊报应 发表于 2024-8-3 11:50
4楼强尼那个不知道可以直接用吗,我暂时有事出差没法试

—— 来自 Xiaomi M2007J3SC, Android 12上的 S1 ...
没敢拿实机试,虚拟机反正失败了,看起来这种动注册表的都得注销再进去才生效

但13楼这个项目 https://github.com/imniko/SetDPI

非常有效

@echo off
setlocal
set "MyApp=你的exe名字"
set "current_scale=当前DPI尺寸百分比(纯数字不要百分号)"
set "next_scale=目标DPI缩放尺寸(纯数字不要百分号)"


start "" "SetDpi.exe" %next_scale%
timeout /t 2
start "" "%MyApp%"

timeout /t 5

:loop
cls

tasklist | find /i "%MyApp%" > nul
set process1_exist=%errorlevel%
if %process1_exist% equ 0 (
    timeout /t 3
    goto loop
)

:endloop
start "" "SetDpi.exe" %current_scale%
exit


简单写了个脚本,有需要就用吧

慕容断月 发表于 2024-8-5 09:30

本帖最后由 慕容断月 于 2024-8-5 09:57 编辑

dvd6 发表于 2024-7-31 12:20
https://github.com/imniko/SetDPI
可以脚本配合这个软件,直接运行参数加dpi数值就能切换。它自带了一个au ...
非常感谢,这个可太好使了,ahk可以用runwait方法来等待程序结束运行后运行下一步

报应啊报应 发表于 2024-8-5 10:08

慕容断月 发表于 2024-8-5 09:22
没敢拿实机试,虚拟机反正失败了,看起来这种动注册表的都得注销再进去才生效

但13楼这个项目 https://gi ...

谢谢!

—— 来自 Xiaomi M2007J3SC, Android 12上的 S1Next-鹅版 v2.5.4
页: [1]
查看完整版本: 求助,有没有坛友会写bat,能实现开一个exe之前把系统缩放切换为100%,