无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 24672|回复: 335
打印 上一主题 下一主题

[已解决] 只差一步:解决PE中DPI显示缩放难题!

    [复制链接]
跳转到指定楼层
1#
发表于 2022-4-26 01:18:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lhc0688 于 2022-5-9 00:27 编辑

对于DPI显示缩放,论坛里查过不少帖子,很多技术思路,但一直未找到能简单应用的方案。目前能在PE中看到的方案,大致有三种:

1、直接写注册表,缩放设置为150%。这种可以一定程度解决高分屏应用,但同时也会给低分屏带来困扰;--- (经实测,这个理解不正确,应该是根据显示分辨率自动缩放)

2、PECMD命令DISP设置分辨率,这种方式成功率很大程度取决于显示驱动,实际使用中很多情况下会无效,而且这种直接设置显示分辨率,也会导致显示器不匹配,黑屏等问题;

3、调用WinXShell命令设置显示缩放,这种确实可以设置缩放,但我自己实际测试感觉缩放效果不够稳定,连续设置大、小比例几次后,桌面图标会出现间距异常,刷新资源管理也无法解决;---- (这段描述不正确,今天刚发现,图标间距异常是跟使用的PE有关,非WinXShell原因特做说明,以免误导他人),而且这种方式要集成WinXShell,如果单为缩放显示,感觉有点大材小用;

为找到更简单稳定的解决方案,我也发过几个帖子求教,但技术大佬们的代码超出我的理解范畴,我的想法是通过简单调用命令或工具,实现手动缩放,或自动判断缩放。

今天又重新捡起这个问题进行折腾,设置工具已有,上次帖子发过,但难题是如何在pe中实现图形界面调用,为此上次还专门学了下vb,做了个带UI的小程序,但后来发现实际使用中会有很多问题,只好放弃;PECMD也可以写UI界面,但同样是技术水平达不到也只能不考虑;

经过一下午的琢磨、尝试,最终采用注册表方式直接添加右键二级菜单方式实现,实际使用后,个人感觉这种方式反倒更简单完美,效果见下图:



经实际测试,缩放效果感觉很稳定,如果连续大小缩放导致图标不同步,刷新下资源管理器即可(桌面系统也是同样);

后续打算解决的问题:

PE启动后先检测DPI显示参数,根据参数自动选择合适缩放比例,看能否有实现的可能---已实现;


请求坛里的大佬能帮助指点下,解决三个技术问题:

1、调用setdpi.exe后同步执行pecmd kill explorer.exe问题:-----【已解决,感谢@826773297朋友指导!】
[HKEY_CLASSES_ROOT\DesktopBackground\shell\Setdpi\shell\Setdpi150\Command]
@="SetDpi 150|pecmd kill explorer.exe"

这样写会导致无效,用call、exec调用也不行;是不是外部命令和pecmd命令不能同时使用?正确写法如何?恳请指教;


2、pecmd.ini里如何写命令,以获取当前显示器分辨率数据(只需一个横向数据就可以,就是那个1024、1920等);---【已成功解决,完美实现启动自动检测设置显示缩放,感谢@826773297朋友的指导,已经帮写的代码!

3、菜单显示位置能否设置靠上下横线,而不是在【粘贴】、【粘贴快捷方式】之间?---【已解决,换了个注册表位置】


三个技术问题已全部解决,非常感谢@826773297坛友的大力帮助

--------------------------------------------
不过刚意识到一个新问题:自己显示器只能测试一个参数,无法测试不同环境下是否都能正常缩放,这个只能拜托坛里有兴趣朋友下载使用实测了。

dpi-3.jpg (198.54 KB, 下载次数: 257)

dpi-3.jpg

评分

参与人数 9无忧币 +39 收起 理由
879792799 + 5 杠杠的
hoder + 5 很给力!
LYYK -1 很给力!
熊猫专用 + 5 赞一个!
2013koko + 5 很给力!
ksafei + 5 很给力!
cuicongyuan + 5 赞一个!
wuxin9712 + 5
Climbing + 5 很给力!

查看全部评分

2#
 楼主| 发表于 2022-4-26 01:29:43 | 只看该作者
调用命令实现缩放用了一分钟,写出右键二级菜单竟然花了近十个小时,小白搞技术真是太难,希望多给指点、支持,水平不到勿见笑。

评分

参与人数 1无忧币 +5 收起 理由
879792799 + 5 不管白猫黑猫 逮到老鼠就是好猫!

查看全部评分

回复

使用道具 举报

3#
发表于 2022-4-26 05:22:43 | 只看该作者
辛苦了,感谢分享!
回复

使用道具 举报

4#
发表于 2022-4-26 06:21:22 | 只看该作者
感谢分享!
回复

使用道具 举报

5#
发表于 2022-4-26 06:59:59 | 只看该作者
厉害了!我来试试
回复

使用道具 举报

6#
发表于 2022-4-26 07:08:03 | 只看该作者
谢谢分享!能否分享可导入的注册表文件?

点评

Windows Registry Editor Version 5.00 ;----------添加DPI显示缩放设置菜单---------- [HKEY_CLASSES_ROOT\DesktopBackground\shell\Setdpi] @="" "MUIVerb"="&设置显示比例" "Subcommands"="" "Position"=  详情 回复 发表于 2022-4-26 10:07
回复

使用道具 举报

7#
发表于 2022-4-26 07:18:08 | 只看该作者
厉害,这个在一些高分屏上非常有用
回复

使用道具 举报

8#
发表于 2022-4-26 07:22:56 | 只看该作者
uefi启动的pe也行吗?

点评

我的就是uefi+gpt分区  详情 回复 发表于 2022-4-26 10:04
回复

使用道具 举报

9#
发表于 2022-4-26 07:57:15 | 只看该作者
感谢分享!
回复

使用道具 举报

10#
发表于 2022-4-26 09:48:44 | 只看该作者
谢谢分享。
回复

使用道具 举报

11#
发表于 2022-4-26 10:04:26 | 只看该作者
右键的注册表可不可以分享一下

点评

已发,见13楼。  发表于 2022-4-26 11:04
回复

使用道具 举报

12#
 楼主| 发表于 2022-4-26 10:04:57 | 只看该作者
sairen139 发表于 2022-4-26 07:22
uefi启动的pe也行吗?

我的就是uefi+gpt分区
回复

使用道具 举报

13#
 楼主| 发表于 2022-4-26 10:07:04 | 只看该作者
481416322 发表于 2022-4-26 07:08
谢谢分享!能否分享可导入的注册表文件?

Windows Registry Editor Version 5.00

;----------添加DPI显示缩放设置菜单----------
[HKEY_CLASSES_ROOT\DesktopBackground\shell\Setdpi]
@=""
"MUIVerb"="&设置显示比例"
"Subcommands"=""
"Position"="Middle"

[HKEY_CLASSES_ROOT\DesktopBackground\shell\Setdpi\shell]

[HKEY_CLASSES_ROOT\DesktopBackground\shell\Setdpi\shell\Setdpi100]
@="缩放为100%"
[HKEY_CLASSES_ROOT\DesktopBackground\shell\Setdpi\shell\Setdpi100\Command]
@="SetDpi 100"

[HKEY_CLASSES_ROOT\DesktopBackground\shell\Setdpi\shell\Setdpi125]
@="缩放为125%"
[HKEY_CLASSES_ROOT\DesktopBackground\shell\Setdpi\shell\Setdpi125\Command]
@="SetDpi 125"

[HKEY_CLASSES_ROOT\DesktopBackground\shell\Setdpi\shell\Setdpi150]
@="缩放为150%"
[HKEY_CLASSES_ROOT\DesktopBackground\shell\Setdpi\shell\Setdpi150\Command]
@="SetDpi 150"

[HKEY_CLASSES_ROOT\DesktopBackground\shell\Setdpi\shell\Setdpi175]
@="缩放为175%"
[HKEY_CLASSES_ROOT\DesktopBackground\shell\Setdpi\shell\Setdpi175\Command]
@="SetDpi 175"

[HKEY_CLASSES_ROOT\DesktopBackground\shell\Setdpi\shell\Setdpi200]
@="缩放为200%"
[HKEY_CLASSES_ROOT\DesktopBackground\shell\Setdpi\shell\Setdpi200\Command]
@="SetDpi 200"

;----------添加DPI显示缩放设置菜单结束----------

点评

谢谢啦!  发表于 2022-4-26 10:44
"Position"="Middle" -- 这个是指定菜单位置,不写默认的也一样;  发表于 2022-4-26 10:13
这个右键二级菜单注册表花了我近十个小时,网上查了几十个,大多都是误导,测试几十遍,二级菜单就是出不来,最后还是自己一点点测试找到正确写法。  详情 回复 发表于 2022-4-26 10:10
回复

使用道具 举报

14#
 楼主| 发表于 2022-4-26 10:10:17 | 只看该作者
lhc0688 发表于 2022-4-26 10:07
Windows Registry Editor Version 5.00

;----------添加DPI显示缩放设置菜单----------

这个右键二级菜单注册表花了我近十个小时,网上查了几十个,大多都是误导,测试几十遍,二级菜单就是出不来,最后还是自己一点点测试找到正确写法。
回复

使用道具 举报

15#
发表于 2022-4-26 10:30:04 | 只看该作者

厉害了!我来试试
回复

使用道具 举报

16#
发表于 2022-4-26 11:17:23 | 只看该作者
PE有这个需求,感谢辛苦研究
回复

使用道具 举报

17#
发表于 2022-4-26 11:22:52 | 只看该作者
command里可以使用PECMD TEAM EXEC SetDpi 150|kill explorer.exe

点评

谢谢!已经测试通过。  详情 回复 发表于 2022-4-26 11:38
回复

使用道具 举报

18#
发表于 2022-4-26 11:25:38 | 只看该作者
[HKEY_CLASSES_ROOT\DesktopBackground\shell\Setdpi\shell\Setdpi150\Command]

@="pecmd.exe team exec =!Setdpi.exe 150|kill explorer.exe"

点评

测试正确!完美运行,非常感谢!  详情 回复 发表于 2022-4-26 11:30
回复

使用道具 举报

19#
发表于 2022-4-26 11:27:28 | 只看该作者
第二个问题,用disp命令获取当前分辨率大小
第三个问题,改注册表,百度有

点评

格式│DISP [-confirm] [-delay] [=显示器号] [@位置矩阵] [S多显方式] [W水平分辨 H垂直分辨] [F刷新率] [T等待ms] [O方向] DISP  详情 回复 发表于 2022-4-26 11:43
好的,先谢!我研究下disp命令。  发表于 2022-4-26 11:37
回复

使用道具 举报

20#
 楼主| 发表于 2022-4-26 11:30:14 | 只看该作者
826773297 发表于 2022-4-26 11:25
[HKEY_CLASSES_ROOT\DesktopBackground\shell\Setdpi\shell\Setdpi150\Command]

@="pecmd.exe team exec ...

测试正确!完美运行,非常感谢!
回复

使用道具 举报

21#
 楼主| 发表于 2022-4-26 11:38:15 | 只看该作者
caocaofff 发表于 2022-4-26 11:22
command里可以使用PECMD TEAM EXEC SetDpi 150|kill explorer.exe

谢谢!已经测试通过。
回复

使用道具 举报

22#
 楼主| 发表于 2022-4-26 11:43:48 | 只看该作者
826773297 发表于 2022-4-26 11:27
第二个问题,用disp命令获取当前分辨率大小
第三个问题,改注册表,百度有

格式│DISP [-confirm] [-delay] [=显示器号] [@位置矩阵] [S多显方式] [P] [W水平分辨 H垂直分辨]

[B颜色深] [F刷新率] [T等待ms]  [O方向]

DISP <?|?*>  [=显示器号] 变量名       //查询当前或全部可能配置,多行,行内TAB分隔  
-----------------------------------------------------------------------------------------------------------------

实在看不懂,命令该如何写,可以获取 【W水平分辨】值,并赋值给一个变量呢?

点评

DISP ? &CUR MESS %&CUR%  详情 回复 发表于 2022-4-26 11:50
回复

使用道具 举报

23#
发表于 2022-4-26 11:50:38 | 只看该作者
lhc0688 发表于 2022-4-26 11:43
格式│DISP [-confirm] [-delay] [=显示器号] [@位置矩阵] [S多显方式]  [W水平分辨 H垂直分辨]

  [F ...

DISP  ? &CUR
MESS %&CUR%
回复

使用道具 举报

24#
发表于 2022-4-26 11:53:54 | 只看该作者
DISP  ? &CUR
MSTR* 水平=<1>%&CUR%
MESS %水平%
手机打的,可能有问题

点评

DISP ? &CUR MSTR* My_dpw=%&CUR% IFEX %My_dpw%>=3840,pecmd.exe team exec =!Setdpi.exe 200,! { IFEX %My_dpw%>=2560,pecmd.exe team exec =!Setdpi.exe 175,! { IFEX %My_dpw%>=1920,pecmd.exe tea  详情 回复 发表于 2022-4-26 12:38
[attachimg]500344[/attachimg] 完美获取!一步到位直接成功执行,非常感谢!技术水平让人钦佩!  详情 回复 发表于 2022-4-26 12:06
好的,我测试下看,先谢!  发表于 2022-4-26 12:02
回复

使用道具 举报

25#
 楼主| 发表于 2022-4-26 12:06:07 | 只看该作者
826773297 发表于 2022-4-26 11:53
DISP  ? &CUR
MSTR* 水平=%&CUR%
MESS %水平%



完美获取!一步到位直接成功执行,非常感谢!技术水平让人钦佩!

点评

楼上可是我们丐帮帮主,很厉害的,纯手工PE创始人,兄嘚,进群了解下。。。QQ群,有兴趣,下次告诉你群号。。。  详情 回复 发表于 2022-4-26 13:01
回复

使用道具 举报

26#
 楼主| 发表于 2022-4-26 12:38:25 | 只看该作者
826773297 发表于 2022-4-26 11:53
DISP  ? &CUR
MSTR* 水平=%&CUR%
MESS %水平%

DISP  ? &CUR
MSTR* My_dpw=<1>%&CUR%

IFEX %My_dpw%>=3840,pecmd.exe team exec =!Setdpi.exe 200,!
{
        IFEX %My_dpw%>=2560,pecmd.exe team exec =!Setdpi.exe 175,!
        {
                IFEX %My_dpw%>=1920,pecmd.exe team exec =!Setdpi.exe 150,!
                {
                        IFEX %My_dpw%>=1600,pecmd.exe team exec =!Setdpi.exe 125,!
                        {
                                pecmd.exe team exec =!Setdpi.exe 100
                        }
                }
        }
}

-----------------------------------------------------
尝试写了个判断语句,但执行发现判断不正确,不知道是变量值问题,还是代码语法问题,还是再麻烦请教看能否指点一下。

点评

DISP ? &CUR MSTR* My_dpw=%&CUR% IFEX |%My_dpw%>=3840, { exec =!Setdpi.exe 200 }! { IFEX |%My_dpw%>=2560, { exec =!setdpi.exe 175 }! { IFEX |%My_dpw%>=1920, { exec =!setdpi.exe 150 }!  详情 回复 发表于 2022-4-26 13:02
测试结果是每个判断都执行了一次。  发表于 2022-4-26 12:42
回复

使用道具 举报

27#
发表于 2022-4-26 13:01:00 来自手机 | 只看该作者
lhc0688 发表于 2022-4-26 12:06
完美获取!一步到位直接成功执行,非常感谢!技术水平让人钦佩!

楼上可是我们丐帮帮主,很厉害的,纯手工PE创始人,兄嘚,进群了解下。。。QQ群,有兴趣,下次告诉你群号。。。

点评

az~  详情 回复 发表于 2022-4-26 13:03
回复

使用道具 举报

28#
发表于 2022-4-26 13:02:07 | 只看该作者
lhc0688 发表于 2022-4-26 12:38
DISP  ? &CUR
MSTR* My_dpw=%&CUR%

DISP  ? &CUR
MSTR* My_dpw=<1>%&CUR%

IFEX |%My_dpw%>=3840,
{
exec =!Setdpi.exe 200
}!
{
IFEX |%My_dpw%>=2560,
{
exec =!setdpi.exe 175
}!
{
IFEX |%My_dpw%>=1920,
{
exec =!setdpi.exe 150
}!
{
IFEX |%My_dpw%>=1600,
{
exec =!setdpi.exe 125
}!
{
exec =!setdpi.exe 100
}
}
}


}

点评

实测代码执行正常,PE启动后完美实现自动检测缩放! 几次发帖都能得到兄弟的耐心传教,技术上都是毫无保留直接帮忙搞定,真是无比感谢!  详情 回复 发表于 2022-4-26 13:20
回复

使用道具 举报

29#
发表于 2022-4-26 13:02:28 | 只看该作者
手机打的,不知道有没有写错
回复

使用道具 举报

30#
发表于 2022-4-26 13:03:55 | 只看该作者
狼人72105 发表于 2022-4-26 13:01
楼上可是我们丐帮帮主,很厉害的,纯手工PE创始人,兄嘚,进群了解下。。。QQ群,有兴趣,下次告诉你群号 ...

az~

点评

好的,谢谢!  发表于 2022-4-26 13:21
哈哈哈哈哈。。。。。  详情 回复 发表于 2022-4-26 13:10
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-27 00:23

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表