无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 34609|回复: 368

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

    [复制链接]
发表于 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.png

1.png




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

3.png

4.png



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



回复

使用道具 举报

发表于 2022-5-25 21:47:24 | 显示全部楼层
本帖最后由 527104427 于 2022-5-28 20:52 编辑


最后再憋个大招:

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

aaa.png







回复

使用道具 举报

发表于 2022-5-26 20:48:36 | 显示全部楼层
本帖最后由 527104427 于 2022-5-26 20:53 编辑
2011whp 发表于 2022-5-26 19:49
227# 那个表是  物理显示器  制造参数,用PPI不准确

我认同 红毛大  的说法:PPI是 图形模型→显示缓 ...

你的意思是这样的吧:
1920x1080计算最大dpi:1080/6.25/96=1.8(约175%)
3840x2160计算最大dpi:2160/6.25/96=3.6(约350%)  
不知道这个计算公式通不通用?

点评

基本对得上 900-1.5 1080-1.8  详情 回复 发表于 2022-5-26 21:11
回复

使用道具 举报

发表于 2022-5-29 13:41:02 | 显示全部楼层
hhh333 发表于 2022-5-29 12:40
是的有问题,如下改下也可:

咸得蛋疼测了下耗时:

哈哈哈,这是强迫症犯了吧?
回复

使用道具 举报

发表于 2022-5-29 14:06:06 | 显示全部楼层
hhh333 发表于 2022-5-29 13:56
哈哈,我们都太笨了。根本不必这么写,愚蠢限制了我们的想像力
永远是这几条
节约400多微秒,每次都是{ ...

这个帅啊!666
回复

使用道具 举报

发表于 2022-5-29 22:50:36 | 显示全部楼层
本帖最后由 527104427 于 2022-5-30 11:56 编辑

添加 /s  和  /auto 参数
所有参数可以写一起,没有顺序之分
pecmd    load    setdpi.wcs    /s     /reg    /auto
pecmd    load    setdpi.wcs    150   /reg    /s

setdpi.7z (4.25 KB, 下载次数: 99)
回复

使用道具 举报

发表于 2022-5-30 20:49:59 | 显示全部楼层
saiz 发表于 2022-5-30 20:10
最新版運算很吃資源嗎?
在VM中測試.因為資源不足而卡住了
分配RAM是4G的

不会啊,命令都是明码,看不出来有问题,
你在wcs第一句加上:
LOGS **t=1 **ON=1 **2 * "C:\XXX.LOG"
看看具体情况。
回复

使用道具 举报

发表于 2022-6-1 10:40:06 | 显示全部楼层
saiz 发表于 2022-6-1 09:04
請問下.我覺得1920*1080時 125%看起來較舒服
那我要在setdpi.wcs修改哪裡才可以自動縮放?

现在都是自动计算的。
非得改的话,把这段:
_sub SetAutoDpi *
        find *=dpi,
        {*
                find *<>RelativeIndex,
                {*
                        //https://www.codenong.com/35233182/
                        set RecommendIndex=0  //0为系统推荐值,系统自动算的,可能是100%,也可能是350%
                        calc i0=(%RecommendIndex%-%RelativeIndex%)-6  //计算250%以上的步进数(步进单位为50%)
                        ifex $%i0%>0, calc dpi=int(6*25+%i0%*50+100)! calc dpi=int[(%RecommendIndex%-%RelativeIndex%)*25+100]
                }!   
                {*
                        //推荐dpi计算公式:最大dpi/1.5
                        calc dpi=int(%MaxDpiOld%/1.5)
                        call CheckDpiRange dpi
                }
        }
_end


换成:
_sub SetAutoDpi *
        find *=dpi,
        {*
                //根据分辨率设定自动DPI值
                set dpi=100
                ifex $%DeskTopVertRes%>=480,  set dpi=100  //DV(480p)  //720*480
                ifex $%DeskTopVertRes%>=720,  set dpi=100  //HD(720p)  //1280*720
                ifex $%DeskTopVertRes%>=1080, set dpi=125  //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 $%DeskTopVertRes%>=1152, set dpi=150  //2K     //2048*1152
                ifex $%DeskTopVertRes%>=1440, set dpi=175  //2.5K   //WQXGA:2560*1600   //Quad HD:2560*1440
                ifex $%DeskTopVertRes%>=2160, set dpi=200  //4K     //一般:4096*2160    //Full Aperture 4K:4096*3112  //Academy 4K:3656*2664  //UHDTV标准:3840*2160
                ifex $%DeskTopVertRes%>=4320, set dpi=300  //8K     //7680*4320
        }
_end



回复

使用道具 举报

发表于 2022-6-1 16:40:03 | 显示全部楼层


感觉搞个GUI挺好的,有时间慢慢玩

QQ截图20220601163741.png
回复

使用道具 举报

发表于 2024-10-19 23:12:52 | 显示全部楼层
gbzx 发表于 2024-10-19 22:53
我的显示器16:9 1920*1080 ,启动后,不会按  ifex $%DeskTopVertRes%>=1080, set dpi=125这个设置,而是 ...

看看你的脚本
回复

使用道具 举报

发表于 2024-10-20 12:01:53 | 显示全部楼层
本帖最后由 527104427 于 2024-10-20 12:52 编辑
gbzx 发表于 2024-10-20 09:08
我把代码:
find *DoReg, call RegDpiMenu "%DoReg:~4%"
find [ *DoReg & *=dpi & *=Auto ], exit

setdpi.7z (1.84 MB, 下载次数: 15)
回复

使用道具 举报

发表于 2024-10-20 17:56:17 | 显示全部楼层
gbzx 发表于 2024-10-20 17:15
x64PE 正常,x86 PE 由于PECMD.EXE没有变量偏移功能,而无法用,网上找不到 x86 版的PECMD.EXE新版

你重新下载,我中午改了好几次。附件里有最新版pecmd,包含32位。建议用附件里的pecmd,因为有些特性只有最新版支持。
回复

使用道具 举报

发表于 2024-10-24 22:04:29 | 显示全部楼层
gbzx 发表于 2024-10-24 20:29
很奇怪,setdpi中,这段代码ifex $%dpi%=100, set Sn=0| ifex $%dpi%=125, set Sn=0| ifex $%dpi%=150, set ...

你这句想表达的逻辑是什么?
按PECMD的语法,你这行第一个set 后面一大串都成一个变量,而不是逐个设置变量。
team 和 |  才是配套的,你这里没有team,把 |  改成换行才符合逻辑。
回复

使用道具 举报

发表于 2024-10-25 19:47:09 | 显示全部楼层
gbzx 发表于 2024-10-25 12:59
已调试好,此版本不需要新版PECMD.EXE就可是用,我前面上传的,思路就不正确

看了一下,你这个逻辑还是不对。

举个简单的例子,比如当前DPI是100%,那么100%对应值是0。
如果当前DPI不是100%,那么100%对应值就非0,用你这个脚本设置肯定是错的。


最后不得不提一下,我写的脚本具有更高的适应性,不但PE可用,正常系统也可用,不但win10可用,win7也可用,当然,也得附加PECMD才行。







回复

使用道具 举报

发表于 2024-11-2 13:13:30 | 显示全部楼层
gbzx 发表于 2024-11-1 15:48
对比了 527104427  和 hhh333二位大侠的代码,他们各有优缺点
设置初始菜单方面:527104427dpi菜单值100-5 ...

还是老问题,没能将实际dpi和api查询到的dpi系数对应起来,虽然我不知道怎么说才能让你明白,但还是忍不住说一下,免得让你误入歧途。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-27 09:26

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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