无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
12
返回列表 发新帖
楼主: lhc0688
打印 上一主题 下一主题

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

    [复制链接]
31#
 楼主| 发表于 2022-5-1 00:54:59 | 显示全部楼层
本帖最后由 lhc0688 于 2022-5-1 00:57 编辑

昨天我才刚意识到,显示缩放后图标间距异常问题,是跟pe有关,而非之前以为的是WinXShell命令的问题,(昨天专门在主贴上加了红字说明进行更正,以免误导他人)。这样的话,调用WinXShell进行显示缩放本身就没有问题!加上几个大佬也说我搞这个没啥意义,目前pe自适应缩放已经可以用(比如昨天说的wepe启动后都能自动缩放150%),所以我昨天已经放弃再折腾这个自适应+手动缩放事情了,而且也把折腾一半的PE、还有资料都清空了,把加了自动缩放的pe也改回重发了。

今天还有点不死心,晚上专门装了虚拟机进行测试,测试发现(用的wepe2.22)在虚拟机下不能自动缩放,反倒是我的方式,完美实现缩放(测试截图我有发群里);

1、至少说明,我采用的自适应缩放方案,更容易实现;

2、pe内采用注册表方式实现缩放,还是会受不同显示环境影响,当然也可能跟ISO有关,这个我还不太懂;

3、本人一直未弄明白的是,注册表实现缩放,到底是根据不同显示器进行不同比例缩放,还是只固定缩放150%,(我个人认为是固定150%);

4、至于有的PE缩放后,刷新资源管理器会出现间距异常问题,这个还是一个需要面对的问题,搞不清原理,就不确定哪些pe可以套用缩放,方法也就不能实现通用性;

5、目前已经可以明确的是:调用WinXShell命令、调用外部setdpi命令、调用微软API接口,三种方式都可以实现实时缩放,这方面应该确实不用再瞎折腾;

6、如果有必要探讨,那我觉得目前主要是探讨pe启动后的自适应缩放问题:注册表方式是否完美?通过pecmd、微软API检测是否就能适合不同显示环境?这方面只能靠技术大佬们来分析判断实现了;




点评

图标间距异常因为图标组没有合适的尺寸  详情 回复 发表于 2022-5-2 18:34
1、从我的pe问题反馈信息来说,注册表Win8DpiScaling=0,dpi是能够自适应的(以实机为准)。特别是外壳以原始分辨率启动后,估计不会再有这方面的问题反馈了。 增加  详情 回复 发表于 2022-5-1 07:03
回复

使用道具 举报

32#
 楼主| 发表于 2022-5-1 08:28:59 | 显示全部楼层
本帖最后由 lhc0688 于 2022-5-1 08:37 编辑
2013koko 发表于 2022-5-1 07:03
1、从我的pe问题反馈信息来说,注册表Win8DpiScaling=0,dpi是能够自适应的(以实机为准),因为并没有收到 ...

通过学习,已经弄明白:
Win8DpiScaling 应该是自动、手动缩放切换,0为自动,1为手动;当等于1时,须同时再指明参数LogPixels值,即缩放比例值,比如96是100%,144是150%;

尚不太明白的是:Win8DpiScaling=0时,跟显示字体相关的几个LogPixels值,注册表里是144,这个是不是实际显示的字体大小?还是说Win8DpiScaling=0时,这些LogPixels值不再起作用?从逻辑上讲,应该是不起作用,只在=1时起作用;

问题是:如果Win8DpiScaling=0系统自动缩放,那为何虚拟机高分辨率下(2k),不缩放?难道是未能正常识别分辨率?那为何pecmd的disp命令却能检测到正确分辨率?



点评

这样的话,问题就简单了:就是系统缩放兼容性如何,是否需要另外再用代码检测判断缩放一次;  发表于 2022-5-1 09:30
LogPixels值系统原生设置在software注册表fontdpi下是90(100%),但实际会随不同设备的自动变更,也就是自适应。 你挂载software看一下,然后在实机启动对比一下就清楚了。  详情 回复 发表于 2022-5-1 08:48
回复

使用道具 举报

33#
 楼主| 发表于 2022-5-1 09:15:20 | 显示全部楼层
还有,调用WinXShell命令、调用外部setdpi命令、或其它工具,实质上应该都是用的微软API接口,应该效果是一样的;
回复

使用道具 举报

34#
 楼主| 发表于 2022-5-1 09:27:32 | 显示全部楼层
2013koko 发表于 2022-5-1 08:48
LogPixels值系统原生设置在software注册表fontdpi下是60,但实际会随不同设备的自动变更,也就是自适应。 ...

用你的pe又挂载看了下,确实是96,看来是我搞错了,可能之前查找值时候没看清,检索的是实机注册表;

点评

其实你可以自己改的,不过我也改了其它地方:右键增加到16个,缩放比如果跟当前相同,就不再设置,免得点一下闪一下,难受  详情 回复 发表于 2022-5-1 23:42
回复

使用道具 举报

35#
 楼主| 发表于 2022-5-1 09:40:12 | 显示全部楼层
现在看来,这个帖子从头到尾罗里吧嗦这么多,确实是因为自己没搞明白;

归纳到最后,就是一个问题:系统自适应缩放是否够用?有没必要再用代码检测一次分辨率再进行缩放一次?

我觉得还是有必要:

1、目前看,系统缩放未能在不同环境下都有效;
2、手写代码检测缩放可以用自己思路,加入更复杂的判断,缩放可以做的更匹配一些;

点评

我觉得可以不用重新检测,毕竟多数dpi都是正常的。但右键调整功能也是必要的,可以帮到有需求的用户。 楼主追求完美的精神与我相似,只是观注点不同。赞一个!  详情 回复 发表于 2022-5-1 10:16
回复

使用道具 举报

36#
 楼主| 发表于 2022-5-1 23:53:23 | 显示全部楼层
527104427 发表于 2022-5-1 23:42
其实你可以自己改的,不过我也改了其它地方:右键增加到16个,缩放比如果跟当前相同,就不再设置,免得 ...

缩放比如果跟当前相同,就不再设置,免得点一下闪一下,难受
------------------------
这个非常好!之前我一直有这样想法,但自己搞不出获取当前缩放值的代码,只能想想而已。

还有一点应该不太有意义的问题,就是右键菜单显示的位置,感觉还不够完美,不知注册表要怎样写,能搞成【在粘贴、粘贴快捷方式】下面,并带分界线(好像就是单独分组的意思)。

点评

1. 上下文菜单分隔线的添加, 使用注册表项值 SeparatorBefore 和 SeparatorAfter, 其数据类型为 REG_DWORD, 数据为任意值, 建议使用 1 2. 关于 Explorer 的刷新, 可以尝试使用 ENVI @@DeskTopFresh=1, 舍弃 Kill Ex  详情 回复 发表于 2022-5-2 15:33
获取用158,上面有不少举例了。  详情 回复 发表于 2022-5-2 10:03
我这是在最后面啊 [attachimg]500662[/attachimg]  详情 回复 发表于 2022-5-2 10:03
回复

使用道具 举报

37#
 楼主| 发表于 2022-5-2 14:45:35 | 显示全部楼层
527104427 发表于 2022-5-2 11:34
果然,还是你厉害!
顺便右键菜单加了个图标

好的,谢谢楼上各位的代码,我估计得花点时间学习研究下,折腾用不是目的,能学习才是最大收获。
回复

使用道具 举报

38#
 楼主| 发表于 2022-5-2 15:09:52 | 显示全部楼层
527104427 发表于 2022-5-2 11:34
果然,还是你厉害!
顺便右键菜单加了个图标

微软win10设置显示缩放可以根据显示分辨率情况,屏蔽不支持的选项;WinXShell命令打开的显示设置也可以;这个是否也可以加如判断达到这样效果呢?这样就避免菜单选项太多反倒不美观,也避免出现执行无效情况。

点评

我觉得可以直接从 159,0,0,1 来往两边分,不用写具体的缩放值。因为这个就是系统推荐的缩放比例。 推荐值放大或缩小2个等级应该就够用了,再大也大不了,再小也无意义。 我现在准备这样改,子菜单就很简洁了。  详情 回复 发表于 2022-5-2 18:46
90楼红毛大佬的代码应该就是判断缩放范围的,但怎么搞出成品就一窍不通了  详情 回复 发表于 2022-5-2 15:57
回复

使用道具 举报

39#
 楼主| 发表于 2022-5-2 22:01:04 | 显示全部楼层
泮安宁 发表于 2022-5-2 18:34
图标间距异常因为图标组没有合适的尺寸

但两个pe都是我用同一种方式改的,工具软件也是相同的,难道这个图标组合尺寸是依赖系统某个设定吗?

点评

HKEY_CURRENT_USER/Control Panel/Desktop/WindowsMetrics Shell Icon Size-----难道是这个值引起的?我测试下看看。  发表于 2022-5-2 22:25
难道跟系统图标库dll有关?  发表于 2022-5-2 22:10
我替换了[HKEY_LOCAL_MACHINE\_aaa\Control Panel\Desktop]完整项,但没作用;  发表于 2022-5-2 22:04
两个pe:一个wepe,一个2013koko的,桌面能知道的唯一区别,是后者原本带有快捷方式小箭头;  发表于 2022-5-2 22:03
回复

使用道具 举报

40#
 楼主| 发表于 2022-5-2 22:44:25 | 显示全部楼层
泮安宁 发表于 2022-5-2 18:34
图标间距异常因为图标组没有合适的尺寸

对比了整个WindowsMetrics项,没发现问题, Shell Icon Size值缩放前后都是32,也没发现问题;

点评

是应用图标组,假如这个应用图标只有一个尺寸,那么缩放就会显示出问题  详情 回复 发表于 2022-5-2 22:49
回复

使用道具 举报

41#
 楼主| 发表于 2022-5-2 22:48:45 | 显示全部楼层
我对比了wepe跟koko两个pe内的cofing文件夹,后者DEFAULT、SYSTEM两个注册表精简幅度都很大,感觉之问题真可能是出在注册表过度精简上了,前面有坛友说过这个问题,我还反驳过。
回复

使用道具 举报

42#
 楼主| 发表于 2022-5-2 23:18:09 | 显示全部楼层
你可以把图标提取出来增加尺寸再替换进去试一下
--------------
这确实是一直测试办法,不过要花点时间改下,回头试试;但同样的图标,在不同pe下出现异常,一定还跟其它项有关,比如检测图标组并对应显示的项。
回复

使用道具 举报

43#
 楼主| 发表于 2022-5-3 11:23:06 | 显示全部楼层
本帖最后由 lhc0688 于 2022-5-3 14:07 编辑

用527104427大师的代码(第一版),能正常自适应缩放,后面两版好像都是按100%缩放了,不知道是什么原因?
setdpi.wcs(第一版).7z (819 Bytes, 下载次数: 19)
setdpi.wcs(第三版).7z (1.68 KB, 下载次数: 18)
回复

使用道具 举报

44#
 楼主| 发表于 2022-5-3 11:32:35 | 显示全部楼层
Bluebells 发表于 2022-5-2 15:33
1. 上下文菜单分隔线的添加, 使用注册表项值 SeparatorBefore 或 SeparatorAfter, 其数据类型为 REG_DWOR ...

刚实际测试了下,使用 ENVI @@DeskTopFresh=1 好像只能刷新桌面,不能刷新图标,(缩放后桌面图标会出现大小不一情况);

点评

确实,没发现其他像kill explorer一样有效且可靠的方法  发表于 2022-5-3 12:17
回复

使用道具 举报

45#
 楼主| 发表于 2022-5-3 12:55:44 | 显示全部楼层
Bluebells 发表于 2022-5-2 15:33
1. 上下文菜单分隔线的添加, 使用注册表项值 SeparatorBefore 或 SeparatorAfter, 其数据类型为 REG_DWOR ...

根据Bluebells朋友的指点,确实解决了选项分组线的问题。但又遇到新问题,选项的位置总是不能按自己想法指定(跑到某选项中间了),如下:


这个不是因为菜单项生成先后顺序的问题,而且注册表里也不能手动改变位置。经过多番测试,最终发现竟然是排序的问题!而且按字母、符号直接排序好像也不行,必须按数字顺序就可以,实际效果截图如下:



这样的话,这个菜单右键相关问题基本算圆满解决了。

点评

这个显示100%怎么跟下面几组分辨率没有对齐,好像出头了一个空格  详情 回复 发表于 2022-5-5 13:37
楼主这个帖子解决了大家困扰许久的问题,感谢此贴所有付出贡献的朋友们! 首页壁纸、右键重启关机注册表能不能也分享一下,再次感谢!  详情 回复 发表于 2022-5-5 12:59
晕,我一直认为是按显示的字符排序的,结果是按注册项排序的  详情 回复 发表于 2022-5-3 14:21
回复

使用道具 举报

46#
 楼主| 发表于 2022-5-5 13:04:48 | 显示全部楼层
nfans 发表于 2022-5-5 12:59
楼主这个帖子解决了大家困扰许久的问题,感谢此贴所有付出贡献的朋友们!

首页壁纸、右键重启关机注册 ...

http://bbs.wuyou.net/forum.php?m ... 9&page=7#pid4557907

190#楼

;===============以下为右键菜单优化=============
;
[HKEY_CLASSES_ROOT\DesktopBackground\Shell\2.shutdown]
@="关机"
"Icon"="shell32.dll,27"
"Position"="bottom"
[HKEY_CLASSES_ROOT\DesktopBackground\Shell\2.shutdown\command]
@="pecmd shut"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DesktopBackground\Shell\2.shutdown]
@="关机"
"Icon"="shell32.dll,27"
"Position"="bottom"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DesktopBackground\Shell\2.shutdown\command]
@="pecmd shut"

[HKEY_CLASSES_ROOT\DesktopBackground\Shell\3.restart]
@="重启"
"Icon"="shell32.dll,146"
"Position"="bottom"
[HKEY_CLASSES_ROOT\DesktopBackground\Shell\3.restart\command]
@="pecmd shut -r"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DesktopBackground\Shell\3.restart]
@="重启"
"Icon"="shell32.dll,146"
"Position"="bottom"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DesktopBackground\Shell\3.restart\command]
@="pecmd shut -r"
;

点评

想要的是这张:  详情 回复 发表于 2022-5-5 13:30
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-6-8 11:01

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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