|
本帖最后由 gbzx 于 2022-9-14 21:46 编辑
我是套用作者Bluebells 69楼的代码,再参考你的说明,用后发现69楼的代码二处要改,第一是注册表项分隔符\\要改成\才会有桌面右键,第二是设置DPI时少了一个参数--bool,没这个参数就会出现“函数不正确”。
改后的代码:
LOGS %windir%\pe.log
//获取屏幕分辨率
DISP ? &CUR
MSTR* curx=<2>%&CUR% //<1>截取屏幕横向分辨率,并赋值curx。<2>截取屏幕纵向分辨率,并赋值curx。
//获取系统推荐DPI
ENVI$# &pvParam=*4 0
CALL $--bool --qd --ret:&SystemParametersInfoWRet user32.dll,SystemParametersInfoW,#158,0,*&pvParam,1
ENVI?ints &pvParam=&DPI0
TEAM CALC #&DPI1=%&DPI0%+1| CALC #&DPI2=%&DPI0%+2| CALC #&DPI3=%&DPI0%+3| CALC #&DPI4=%&DPI0%+4| CALC #&DPI5=%&DPI0%+5| CALC #&DPI6=%&DPI0%+6| CALC #&DPI7=%&DPI0%+7
//自动设置系统开机缩放比例
ifex $%curx%>=720,CALL $--bool --qd# user32.dll,SystemParametersInfoW,159,%&DPI0%,0,1 //HD
ifex $%curx%>=1080,CALL $--bool --qd# user32.dll,SystemParametersInfoW,159,%&DPI1%,0,1 //FHD
ifex $%curx%>=1440,CALL $--bool --qd# user32.dll,SystemParametersInfoW,159,%&DPI2%,0,1 //2K
ifex $%curx%>=2160,CALL $--bool --qd# user32.dll,SystemParametersInfoW,159,%&DPI3%,0,1 //4K
ifex $%curx%>=4320,CALL $--bool --qd# user32.dll,SystemParametersInfoW,159,%&DPI4%,0,1 //8K
MESS %&SystemParametersInfoWRet%<%&DPI0%>
PE日志如下
1 {ENTER:D:\autodpi.ini}
1 [LOGS X:\Windows\pe.log] <0> :操作成功完成。
2
3 [DISP ? &CUR] <0> :操作成功完成。
4 [MSTR* curx=<2>1920 1080 32 64] <0> :操作成功完成。
5
6 [ENVI$# &pvParam=*4 0] <0> :操作成功完成。
7 [CALL $--bool --qd --ret:&SystemParametersInfoWRet user32.dll,SystemParametersInfoW,#158,0,*&pvParam,1] <0> :操作成功完成。
8 [ENVI?ints &pvParam=&DPI0] <0> :操作成功完成。
9 [CALC #&DPI1=0+1] <0> :操作成功完成。
9 [CALC #&DPI2=0+2] <0> :操作成功完成。
9 [CALC #&DPI3=0+3] <0> :操作成功完成。
9 [CALC #&DPI4=0+4] <0> :操作成功完成。
9 [CALC #&DPI5=0+5] <0> :操作成功完成。
9 [CALC #&DPI6=0+6] <0> :操作成功完成。
9 [CALC #&DPI7=0+7] <0> :操作成功完成。
9 [TEAM CALC #&DPI1=0+1| CALC #&DPI2=0+2| CALC #&DPI3=0+3| CALC #&DPI4=0+4| CALC #&DPI5=0+5| CALC #&DPI6=0+6| CALC #&DPI7=0+7] <0> :操作成功完成。
11 {ifex $1080>=720,CALL $--bool --qd# user32.dll,SystemParametersInfoW,159,0,0,1}
11 [CALL $--bool --qd# user32.dll,SystemParametersInfoW,159,0,0,1] <0> :操作成功完成。
11 [ifex $1080>=720,CALL $--bool --qd# user32.dll,SystemParametersInfoW,159,0,0,1] <0> :操作成功完成。
12 {ifex $1080>=1080,CALL $--bool --qd# user32.dll,SystemParametersInfoW,159,1,0,1}
12 [CALL $--bool --qd# user32.dll,SystemParametersInfoW,159,1,0,1] <0> :操作成功完成。
12 [ifex $1080>=1080,CALL $--bool --qd# user32.dll,SystemParametersInfoW,159,1,0,1] <0> :操作成功完成。
13 {ifex $1080>=1440,CALL $--bool --qd# user32.dll,SystemParametersInfoW,159,2,0,1}
13 [ifex $1080>=1440,CALL $--bool --qd# user32.dll,SystemParametersInfoW,159,2,0,1] <0> :操作成功完成。
14 {ifex $1080>=2160,CALL $--bool --qd# user32.dll,SystemParametersInfoW,159,3,0,1}
14 [ifex $1080>=2160,CALL $--bool --qd# user32.dll,SystemParametersInfoW,159,3,0,1] <0> :操作成功完成。
15 {ifex $1080>=4320,CALL $--bool --qd# user32.dll,SystemParametersInfoW,159,4,0,1}
15 [ifex $1080>=4320,CALL $--bool --qd# user32.dll,SystemParametersInfoW,159,4,0,1] <0> :操作成功完成。
16 [MESS 1<0>] <0> :操作成功完成。
MESS %&SystemParametersInfoWRet%<%&DPI0%>的结果是[MESS 1<0>],前面的那个1不知是啥意?0应该是系统推荐的DPI
桌面右键
//注册右键菜单
REGI $HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DesktopBackground\Shell\SetDPI\SubCommands=
REGI $HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DesktopBackground\Shell\SetDPI\MUIVerb=DPI设置(&Z)
REGI $HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DesktopBackground\Shell\SetDPI\Icon=X:\Windows\Resources\Icons\Display.dll_1.ico
REGI $HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DesktopBackground\Shell\SetDPI\Position=Bottom
REGI $HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DesktopBackground\Shell\SetDPI\shell\ZoomFactor0\MUIVerb=缩放比例 100%%
REGI $HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DesktopBackground\Shell\SetDPI\shell\ZoomFactor0\command\=PECMD.EXE TEAM CALL $--bool --qd# user32.dll,SystemParametersInfoW,159,%&DPI0%,0,1| ENVI @@DeskTopFresh=1
REGI $HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DesktopBackground\Shell\SetDPI\shell\ZoomFactor1\MUIVerb=缩放比例 125%%
REGI $HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DesktopBackground\Shell\SetDPI\shell\ZoomFactor1\command\=PECMD.EXE TEAM CALL $--bool --qd# user32.dll,SystemParametersInfoW,159,%&DPI1%,0,1| ENVI @@DeskTopFresh=1
REGI $HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DesktopBackground\Shell\SetDPI\shell\ZoomFactor2\MUIVerb=缩放比例 150%%
REGI $HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DesktopBackground\Shell\SetDPI\shell\ZoomFactor2\command\=PECMD.EXE TEAM CALL $--bool --qd# user32.dll,SystemParametersInfoW,159,%&DPI2%,0,1| ENVI @@DeskTopFresh=1
REGI $HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DesktopBackground\Shell\SetDPI\shell\ZoomFactor3\MUIVerb=缩放比例 175%%
REGI $HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DesktopBackground\Shell\SetDPI\shell\ZoomFactor3\command\=PECMD.EXE TEAM CALL $--bool --qd# user32.dll,SystemParametersInfoW,159,%&DPI3%,0,1| ENVI @@DeskTopFresh=1
REGI $HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DesktopBackground\Shell\SetDPI\shell\ZoomFactor4\MUIVerb=缩放比例 200%%
REGI $HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DesktopBackground\Shell\SetDPI\shell\ZoomFactor4\command\=PECMD.EXE TEAM CALL $--bool --qd# user32.dll,SystemParametersInfoW,159,%&DPI4%,0,1| ENVI @@DeskTopFresh=1
|
|