无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: lhc0688
打印 上一主题 下一主题

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

    [复制链接]
181#
发表于 2022-5-23 19:51:06 | 只看该作者
注销方式在8/8.1PE中没有问题,有些PE不支持进行注销操作,肯定就不能使用了。
Win8PE中:


Win8.1PE中


Win8.1PE磁贴中没变


回复

使用道具 举报

182#
发表于 2022-5-23 20:44:17 | 只看该作者

想请教一个问题:
call $--qd# user32.dll,SystemParametersInfoW,159,%dpix%,0,1 
1、这个有不有返回值?
2、如果有,需要注销才生效或直接生效的返回值有不有不同

点评

call $--qd# --ret:xxx user32.dll,SystemParametersInfoW,159,%dpix%,0,1 mess. [%xxx%] 这样应该能看到返回值,不过我猜测注不注销都是一样的值,因为不注销也是改过DPI了,只不过不是想要的DPI  详情 回复 发表于 2022-5-23 20:52
回复

使用道具 举报

183#
发表于 2022-5-23 22:36:29 | 只看该作者
本帖最后由 hhh333 于 2022-5-23 22:56 编辑
527104427 发表于 2022-5-23 20:52
call $--qd#   --ret:xxx   user32.dll,SystemParametersInfoW,159,%dpix%,0,1
mess.  [%xxx%]
这样应 ...

已经测试,返回值没区别
Win10以上返回值都是1
win10以下,似乎100-125%返回1,其他均返回0
回复

使用道具 举报

184#
发表于 2022-5-23 23:38:38 | 只看该作者
本帖最后由 hhh333 于 2022-5-23 23:41 编辑

进一步理清逻辑关系: setdpi.7z (3.02 KB, 下载次数: 20)  为方便理解加了一些说明和注释。
经验证在Win7/8/8.1/10/11的PE系统中均有效,但要在支持切换到Administrator功能的PE才可用。

点评

我再给你加点料  详情 回复 发表于 2022-5-24 07:12
回复

使用道具 举报

185#
发表于 2022-5-24 07:35:48 | 只看该作者

好,我再学习一下
回复

使用道具 举报

186#
发表于 2022-5-24 08:14:05 | 只看该作者
链接里有说切换分辨率来生效,前提能找到另一种分辨率切换过去,再切换回来。

点评

意思是不用注销?  详情 回复 发表于 2022-5-24 09:48
回复

使用道具 举报

187#
发表于 2022-5-24 09:48:22 | 只看该作者
szwp 发表于 2022-5-24 08:14
链接里有说切换分辨率来生效,前提能找到另一种分辨率切换过去,再切换回来。

意思是不用注销?

点评

一个像素可以含多个点。第一个链接里有写改变分辨率生效,俺没试过,点只看该作者看看。  详情 回复 发表于 2022-5-24 10:03
回复

使用道具 举报

188#
发表于 2022-5-24 10:03:06 | 只看该作者
hhh333 发表于 2022-5-24 09:48
意思是不用注销?

一个像素可以含多个点。第一个链接里有写改变分辨率生效,俺没试过,点只看该作者看看。

点评

经测试,函数不能直接改不生效时,再改分辨率也不生效,非得改注册表再注销是才行  详情 回复 发表于 2022-5-24 10:16
回复

使用道具 举报

189#
发表于 2022-5-24 10:16:51 | 只看该作者
szwp 发表于 2022-5-24 10:03
一个像素可以含多个点。第一个链接里有写改变分辨率生效,俺没试过,点只看该作者看看。

经测试,函数不能直接改不生效时,再改分辨率也不生效,非得改注册表再注销是才行

点评

我发现你把/reg改没了,只能/reg+数字。改回去了。另外,卸载也弹出提示,应该没必要,直接给过了。  详情 回复 发表于 2022-5-24 11:38
回复

使用道具 举报

190#
发表于 2022-5-24 19:02:09 | 只看该作者
本帖最后由 hhh333 于 2022-5-24 19:03 编辑
527104427 发表于 2022-5-24 11:38
我发现你把/reg改没了,只能/reg+数字。改回去了。
另外,卸载也弹出提示,应该没必要,直接给过了。

...

是的,改后逻辑性更好了。
在两台电脑上经过测试,其中一台的最大分辨率可以达到1920X1080,能够直接更改的最大值为175%;另一台的最大分辨率为1440X900,最大只能缩放到150%,超过以上倍数函数会自动按能够支持最大倍数进行设置,因此没必要回退到原分辨率;
我也加了点料,在system用户下当前实际分辨率可以反映到菜单中: setdpi.7z (3.65 KB, 下载次数: 27)

点评

怎么判断,不能超过350%的, [attachimg]501880[/attachimg]  详情 回复 发表于 2022-5-24 22:48
有几个问题不得不提一下: 1.这里的两个13(/reg14)应该改成12吧,我看系统的设置里面只有100%~500%,应该不支持550% [attachimg]501864[/attachimg] [attachimg]501863[/attachimg] 2.我觉  详情 回复 发表于 2022-5-24 19:30
回复

使用道具 举报

191#
发表于 2022-5-24 19:30:39 | 只看该作者
本帖最后由 527104427 于 2022-5-25 11:41 编辑
hhh333 发表于 2022-5-24 19:02
是的,改后逻辑性更好了。
在两台电脑上经过测试,其中一台的最大分辨率可以达到1920X1080,能够直接更 ...

有几个问题不得不提一下:


1.这里的两个13(/reg14)应该改成12吧,我看系统的设置里面只有100%~500%,应该不支持550%








2.我觉得MESS=画出来的框比较专业,也比较美观,你觉得呢?以下是两种MESS的对比图







3._sub RegYesNo内的exit是不能退出注册的,只能退出_sub段,注册照常进行。
并且判断是否为PE有专门的命令:ENVI ?返回名=ispe
返回0就是正常系统,代码:

        ifex $%n%>=0,
        {
                set ?pe=ispe
                ifex $[ %ret158%<=0 & %pe%=0 ],  `询问是否注册右键(PE中不提示以便自动注册)
                {
                        mess=-icon1 当前系统不支持直接缩放,可能需要注销才能使更改生效。\n\n请确定还要注册本程序右键功能吗@提醒#YN*15000
                        find $%YESNO%=NO, exit
                }
                ifex $%n%<3, set n=3
                ifex $%n%>12, set n=12



点评

改好了,exit file是可以的,不加这个确实不能中断  详情 回复 发表于 2022-5-24 21:37
1、13是没错,是菜单总数,对应的档位是12档,加上自动是13档,前面进行了-1操作,所以后面你写12是对的,我那个不对 2、MESS=有这功效?真不知道,好看多了 3、可不可以exit file  详情 回复 发表于 2022-5-24 21:22
回复

使用道具 举报

192#
发表于 2022-5-24 19:58:50 来自手机 | 只看该作者
精简版的win7/8pe咋个注销法?几年前就想注销,一直没找到方法

点评

只要支持切换到admin,切换以后就可以直接注销。但在system注销无效  详情 回复 发表于 2022-5-24 21:35
回复

使用道具 举报

193#
发表于 2022-5-24 20:38:15 | 只看该作者
本帖最后由 2011whp 于 2022-5-24 20:53 编辑

假定 win的最小 ppi屏表现是 25.4(10英寸)
假定系统dpi是96(台式机全是)
假定最大分辨宽度为:L
假定最大放大倍数为:x

则:最大放大倍数为:L/96/x*2.54>2.54*10
         即:x<L/960
         例:1.75 < 1920/960=2
            或 1.5 < 1440/960=1.5

看着不 怎么符合hhh333说法:可能是个分段 函数?
——————————————————————
也可能 是最大分辨率的高度限定?假定高度最小为 为6英寸
                 1.75 < 1080/96/6=1.875
                 1.5 <  960/96/6=1.67
这么看着,凑合,符合hhh333说法

如果 真有规律,没必要加那么多 放大等级。

点评

应该是有规律的  详情 回复 发表于 2022-5-24 21:34
你这公式看着有点懵。 系统是支持改100%~500%之间DPI的,做成右键只是方便使用而已,不用鼠标到控制面板点来点去,键盘敲来敲去。 加那么多放大等级,完全是系统设置中有的东西,并不是凭空想象出来的。  详情 回复 发表于 2022-5-24 21:31
回复

使用道具 举报

194#
发表于 2022-5-24 21:22:26 | 只看该作者
527104427 发表于 2022-5-24 19:30
有几个问题不得不提一下:

1、13是没错,是菜单总数,对应的档位是12档,加上自动是13档,前面进行了-1操作,所以后面你写12是对的,我那个不对
2、MESS=有这功效?真不知道,好看多了
3、可不可以exit file

点评

exit file可以  详情 回复 发表于 2022-5-24 21:26
回复

使用道具 举报

195#
发表于 2022-5-24 21:34:13 | 只看该作者
2011whp 发表于 2022-5-24 20:38
假定 win的最小 ppi屏表现是 25.4(10英寸)
假定系统dpi是96(台式机全是)
假定最大分辨宽度为:L

应该是有规律的
回复

使用道具 举报

196#
发表于 2022-5-24 21:35:35 | 只看该作者
红毛樱木 发表于 2022-5-24 19:58
精简版的win7/8pe咋个注销法?几年前就想注销,一直没找到方法

只要支持切换到admin,切换以后就可以直接注销。但在system注销无效
回复

使用道具 举报

197#
发表于 2022-5-24 21:37:52 | 只看该作者
527104427 发表于 2022-5-24 19:30
有几个问题不得不提一下:

改好了,exit file是可以的,不加这个确实不能中断
回复

使用道具 举报

198#
发表于 2022-5-24 22:48:48 | 只看该作者
hhh333 发表于 2022-5-24 19:02
是的,改后逻辑性更好了。
在两台电脑上经过测试,其中一台的最大分辨率可以达到1920X1080,能够直接更 ...

怎么判断,不能超过350%的,

点评

是不是这个规律: ifex $%cury%>=480, TEAM set dpi=100|set maxdpi=125 //DV(480p) //720*480 ifex $%cury%>=720, set dpi=100|set maxdpi=150 //HD(720p) //1280*720 ifex $%cury%>=1080, set dpi=100|  详情 回复 发表于 2022-5-24 23:34
回复

使用道具 举报

199#
发表于 2022-5-24 23:34:39 | 只看该作者
本帖最后由 hhh333 于 2022-5-25 00:05 编辑
2011whp 发表于 2022-5-24 22:48
怎么判断,不能超过350%的,

是不是这个规律:
`根据分辨率设定自动DPI值和最大直达DPI值
disp ? cur
mstr* * curx,cury=<1*>cur
set autodpi=100
ifex $%cury%>=480,team set autodpi=100|set maxdpi=125  //DV(480p)  //720*480
ifex $%cury%>=720,team set autodpi=100|set maxdpi=150  //HD(720p)  //1280*720
ifex $%cury%>=1080,team set autodpi=100|set maxdpi=175  //1K(1080p、Full HD、FHD)    //16:9 1920*1080   //16:10 1920*1200  //一般:1920*1080,虽然具有近 2000 像素的水平分辨率,但在大部分的媒体,包括网页制作以及影像制作,书籍等都认为 1080p 与 2K 分辨率为不同的分辨率而非相同,并不是标准的2K,但因为1080p具有近 2000 像素的水平分辨率,因此1080p可以被归类为2K,而非1K。
ifex $%cury%>=1152,team set autodpi=150|set maxdpi=200  //2K     //2048*1152
ifex $%cury%>=1440,team set autodpi=175|set maxdpi=250  //2.5K   //WQXGA:2560*1600   //Quad HD:2560*1440
ifex $%cury%>=2160,team set autodpi=200|set maxdpi=350  //4K     //一般:4096*2160    //Full Aperture 4K:4096*3112  //Academy 4K:3656*2664  //UHDTV标准:3840*2160
ifex $%cury%>=4320,team set autodpi=300|set maxdpi=500  //8K     //7680*4320

回复

使用道具 举报

200#
发表于 2022-5-25 09:48:27 | 只看该作者
https://docs.microsoft.com/zh-cn ... d-registry-settings

里面有表可参考,推荐值不光和分辨率有关,和屏幕大小也有关的。
但目前投影仪的屏幕大小是系统没法得知的。
回复

使用道具 举报

201#
发表于 2022-5-25 10:00:40 | 只看该作者
按照分辨率修改dpi不大正确,同时需要考虑屏幕尺寸
回复

使用道具 举报

202#
发表于 2022-5-25 10:23:02 | 只看该作者
这次应该逻辑上严谨了吧: setdpi.7z (4.11 KB, 下载次数: 23)
作了一些改变:
1、setdpi /reg 改为注册到能够直达的最大值(目前是按经验根据分辨率确定的);
2、原先是选择不注册也会清除原先的菜单,现在改成<=0才清除右键菜单;

感谢527104427等各位大佬提供学习机会

dpiw10sys300.PNG (1.68 MB, 下载次数: 105)

dpiw10sys300.PNG

点评

另外想问一下,calc前面加“^”这个符号有什么讲究?  详情 回复 发表于 2022-5-25 12:31
你这里弄错了,ispe是命令,pe才是变量名,所以下面应该是%pe%,而不是%ispe% [attachimg]501912[/attachimg]  详情 回复 发表于 2022-5-25 11:23
回复

使用道具 举报

203#
发表于 2022-5-25 11:55:34 | 只看该作者
本帖最后由 hhh333 于 2022-5-25 12:28 编辑
527104427 发表于 2022-5-25 11:23
两个问题:
1.你这里弄错了,ispe是命令,pe才是变量名,所以下面应该是%pe%,而不是%ispe%
(汗,原来 ...

1、抄作业没细看,确实不对
2、还是我这个逻辑合理些吧,写入的时候才清,不影响别人

改过来了: setdpi.7z (4.11 KB, 下载次数: 34)  没得错了吧
回复

使用道具 举报

204#
发表于 2022-5-25 12:31:07 | 只看该作者
hhh333 发表于 2022-5-25 10:23
这次应该逻辑上严谨了吧:
作了一些改变:
1、setdpi /reg 改为注册到能够直达的最大值(目前是按经验根 ...

另外想问一下,calc前面加“^”这个符号有什么讲究?

点评

前面有几个^,就预处理几次命令。比如: set a=%~1 calc b=%a% 相当于 ^calc b=%~1 如果不预处理,就得写两行,否则出错  详情 回复 发表于 2022-5-25 13:33
回复

使用道具 举报

205#
发表于 2022-5-25 21:47:24 | 只看该作者
本帖最后由 527104427 于 2022-5-28 20:52 编辑


最后再憋个大招:

根据szwp提供的网址研究了一下,发现系统早就为我们算好了推荐dpi,自动设置时只需要将这个值干上去就完事了,不用再根据分辨率猜来猜去
https://www.codenong.com/35233182/









点评

似乎也不是很好,win7系统不支持函数SystemParametersInfoW  详情 回复 发表于 2022-5-26 10:13
传0进去,就是推荐值,始终如一,我前面翻译api的时候就说过  详情 回复 发表于 2022-5-25 22:58
回复

使用道具 举报

206#
发表于 2022-5-25 22:58:09 来自手机 | 只看该作者
527104427 发表于 2022-5-25 21:47
不玩了,最后再憋个大招:

根据szwp
提供的网址研究了一下,发现系统早就为我们算好了 ...

传0进去,就是推荐值,始终如一,我前面翻译api的时候就说过
回复

使用道具 举报

207#
发表于 2022-5-26 10:13:36 | 只看该作者
527104427 发表于 2022-5-25 21:47
不玩了,最后再憋个大招:

根据szwp提供的网址研究了一下,发现系统早就为我们算好了 ...

似乎也不是很好,win7系统不支持函数SystemParametersInfoW

点评

设置不了,但可以查询。只要查询到建议值,直接干注册表  详情 回复 发表于 2022-5-26 10:15
回复

使用道具 举报

208#
发表于 2022-5-26 10:34:54 | 只看该作者
楼主欢迎进群1067888280有你要的答案
回复

使用道具 举报

209#
发表于 2022-5-26 11:28:08 | 只看该作者
本帖最后由 2011whp 于 2022-5-27 11:48 编辑

再猜  微软意图:


估计 6.25 以上 win才能 完美表现。

以前基于 像素的win 要求实际屏,最少600像素高度
回复

使用道具 举报

210#
发表于 2022-5-26 11:43:57 | 只看该作者
本帖最后由 hhh333 于 2022-5-26 11:46 编辑
527104427 发表于 2022-5-26 10:15
设置不了,但可以查询。只要查询到建议值,直接干注册表
根据微软官方的说法是这么理解的,查询支持win2 ...

我也是这么想的,先用老的查表法,ret158>0时才用新方法。win7的ret158确实是0,说明返回没成功
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-30 06:23

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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