NSIS:超级轻量皮肤SkinH

时间:2020-12-13 12:10:50

原文 NSIS:超级轻量皮肤SkinH

这虽然是一个其他软件的皮肤控件,不过拿来用到NSIS上还是不错的。控件加皮肤文件只有100多K,可以说是比较难得了!

看一下效果:

NSIS:超级轻量皮肤SkinH

 
代码示例:
01 #皮肤演示程序  少轻狂 www.flighty.cn
02  
03 !define PRODUCT_NAME "My application"
04 SetCompressor lzma
05 !include "MUI.nsh"
06  
07 !define MUI_CUSTOMFUNCTION_GUIINIT onGUIInit
08  
09 !insertmacro MUI_PAGE_WELCOME
10 !insertmacro MUI_PAGE_DIRECTORY
11 !insertmacro MUI_PAGE_INSTFILES
12 !insertmacro MUI_PAGE_FINISH
13  
14 !insertmacro MUI_LANGUAGE "SimpChinese"
15  
16 Name "皮肤演示程序"
17 OutFile "皮肤演示.exe"
18 InstallDir "$PROGRAMFILES\My application"
19  
20 Section
21 SectionEnd
22  
23 Function onGUIInit
24   InitPluginsDir
25   SetOutPath $PLUGINSDIR
26   File SkinH.dll
27   File skinh.she
28   System::Call SkinH::SkinH_Attach()
29  
30 ################ SkinSharp补丁, 让小衣服不显示 ################
31   System::Call Kernel32::GetModuleHandle(t"SkinH.dll")i.r0
32   IntOp $0 $0 + 0x0002CA98
33   System::Call Kernel32::GetCurrentProcess()i.s
34   System::Call Kernel32::VirtualProtectEx(is,ir0,i4,i0x40,*i)
35   System::Call "*$0(&i1 0)"
36 ###############################################################
37 FunctionEnd
38  
39 Function .onGUIEnd
40 ; 让插件目录可顺利删除
41   System::Call Kernel32::GetModuleHandle(t"SkinH.dll")i.s
42   System::Call Kernel32::FreeLibrary(is)
43   System::Call Kernel32::SetCurrentDirectory(t"$EXEDIR\")
44 FunctionEnd
 
 
插件下载: