Skip to content


nsis 绿化程序UI源码

  最近一直想做一个仿绿色软件站的绿化程序,只是UI一直设计不好,今天有清心雅阁的站长帮忙,才算有了眉目,在此表示感谢!

  其实代码算是在清心雅阁的基础上修改的,界面模仿寒星先生的去广告补丁。 UI切割过程:

  所谓的修改UI即使用资源编辑器如ResHacker编辑NSIS\Contrib\UIs下的UI界面,举例拿default.exe为例,拷贝出来,修改为NoadUI.exe备用。我是根据寒星先生的去广告补丁界面模仿的,这样免去了很多自己修改UI的操作。脱壳后用RH将去广告补丁中的资源105,106,111,粘到NoadUI.exe备用,如果自己修改UI自己看着来吧,模仿那些绿化界面也可以参考如下过程,大多数去广告补丁和绿化补丁都是InstallOptions,少部分用nsDialogs或InstallOptionsex,我们这里只讲仿制界面,代码部分你可以百度到寒星先生和另一个组织的绿化脚本,基本内容大同小异,至于nsis+dup2的补丁方式的实现思想见我的空间,这里不多说了,看写那么多字吓一跳了已经。绘制界面的快捷键是CTRL+I。摘自[http://bbs.wmzhe.com]

软件相关图片:

nsis 绿化程序UI源码下载

压缩包包括所需源码+NSIS V2.45中文增强版

不愿下载的网友也可以参考如下代码:

#压缩设置

  SetCompressor /SOLID lzma

  SetCompressorDictSize 32

  SetDatablockOptimize on

  SetCompress auto

#预先载入文件,方便安装加速释放

  Reservefile "Res\iewb_net.ini"

  ReserveFile "Res\header.bmp"

  ReserveFile "${NSISDIR}\Plugins\System.dll"

#头文件

  !include "MUI.nsh"

  !include "logiclib.nsh"

  !include "WinMessages.nsh"

  !include "UsefulLib.nsh"

#界面相关

  ;只有单击"取消"才能取消安装

  ;!define MUI_ABORTWARNING

  ;!define MUI_ABORTWARNING_TEXT "你确定要退出?"

  !define MUI_ICON "Res\io.ico"

  !define MUI_HEADERIMAGE

  !define MUI_HEADERIMAGE_BITMAP "Res\header.bmp"

  !define MUI_CUSTOMFUNCTION_GUIINIT .MyGUIInit

  !define MUI_FINISHPAGE_NOAUTOCLOSE

  page custom show leave

#相关宏

  !insertmacro MUI_LANGUAGE "SimpChinese"

#使用自定义UI

  ChangeUI all "C:\Documents and Settings\Administrator\桌面\绿化工具\Contrib\default.exe"

#程序设置

  Caption "绿化工具"

  OutFile "绿化工具.exe"

  XPStyle on

#程序执行前操作

  Function .oninit

  InitPluginsDir

    ;设置输出路径且当路径不存在时创建,设定当前的工作目录

    SetOutPath $PluginsDIR

    ;释放文件

    File "Res\iewb_net.ini"

    ;检测"要检测的文件"是否存在,当文件存在时跳转

    ;IfFileExists "$EXEDIR\*.exe" PathGood

    ;MessageBox MB_OK|MB_ICONEXCLAMATION|MB_TOPMOST "请把绿化工具复制到程序所在文件夹下运行。"

    ;Abort

    ;PathGood:

  Functionend

#定义要创建的控件(ID不能重复,否则会产生未知错误!)

  ;定义关于按钮

  !ifndef IDC_BUTTON

  !define IDC_BUTTON 1190

  !endif

  ;定义链接

  !ifndef IDC_LINKER

  !define IDC_LINKER 1200

  !endif

  ;创建公共函数

  !macro MYMACRO un

  Function ${un}.AboutButton

    MessageBox MB_OK|MB_ICONINFORMATION "启光博客$\nwww.iewb.net"

  FunctionEnd

  Function ${un}.MyGUIInit

  InitPluginsDir

    ;创建按钮

    ;用法:${CreateButton2} 显示文本 X轴位置 Y轴位置 宽度 高度 父窗口窗口句柄 控件ID 目标函数

    ${CreateButton2} "关于(&A)" 118 192 68 18 $HWNDPARENT ${IDC_BUTTON} ${un}.AboutButton

    ;创建链接

    ${CreateLinker2} "启光博客" 20 194 80 $2 $HWNDPARENT ${IDC_LINKER} "http:/www.iewb.net"

  FunctionEnd

  Function ${un}.onGUIEnd

    ButtonLinker::unload

  FunctionEnd

  !macroend

  ;插入安装函数

  !insertmacro MYMACRO ""

#函数定义

  Function show

    installoptions::initdialog /nounload $PluginsDIR\iewb_net.ini

    installoptions::show

  Functionend

  Function leave

      ReadINIStr $0 "$PluginsDIR\iewb_net.ini" Settings State

    ${Switch} $0

    ${Default}

      Abort

    ${Case} 2

      Call inst

      Abort

    ${Case} 3

      Call uninst

      Abort

    ${Case} 0

    ${EndSwitch}

  Functionend

 

  Function inst

  ;在这里放上绿化的代码

  ;………………..

  ;刷新屏幕

  ;System::Call 'Shell32::SHChangeNotify(i 0×8000000, i 0, i 0, i 0)'

  MessageBox MB_OK|MB_ICONINFORMATION "绿化完成!"

  Return

  FunctionEnd

  Function uninst

  ;在这里放上卸载的代码

  ;………………..

  MessageBox MB_OK|MB_ICONINFORMATION "卸载完成!"

  Return

  FunctionEnd

#区段定义

  Section "-形式而已"

  sectionend

相关文章

所属分类 技术文章.

文章标签 , .

原创文章转载请注明,转载自:启光博客[http://www.iewb.net]

原文链接: http://www.iewb.net/index.php/qg/1712.html


5 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. hzusb 评论

    老师把你的工程分享一下行么?包括修改的UI界面!刚有兴趣,才入门,想学学!先感谢你!

  2. 一个好人 评论

    你是大好人!!正需要,学习下!~~~~

  3. nisi 评论

    正需要,下载了~~~~~



欢迎点评

or, reply to this post via trackback.