编写NSIS脚本语言实现超级按钮

   很多开发工具中都提供了插件方便用户实现一些常见的功能,减少程序员的负担。今天小编就来跟大家介绍如何调用ButtonLinker插件实现超级按钮效果。

  /*

  #脚本范例#

  编写:X-Star, zhfi

  描述:利用插件与头文件创建超级按钮&链接&菜单,无需修改UI即可实现

  资源:插件 "ButtonEvent.dll"、"linker.dll"、"System.dll" 及头文件 "ButtonLinkerLib.nsh"

  */

  !AddPluginDir "."

  !AddIncludeDir "."

  !include MUI2.nsh

  !include ButtonLinkerLib.nsh

  ;!include UsefulLib.nsh

  ; --------------------------------------------------

  ; General settings.

  Name "ButtonLinker Example"

  OutFile "ButtonLinkerMUI.exe"

  SetCompressor /SOLID lzma

  ;ReserveFile "ButtonLinker.dll"

  ; --------------------------------------------------

  ; MUI interface settings.

  # We want to use our own UI with custom buttons!

  # The event handler for our parent button is added in MyGUIInit.

  !define MUI_CUSTOMFUNCTION_GUIINIT MyGUIInit

  # Don't skip to the finish page.

  !define MUI_FINISHPAGE_NOAUTOCLOSE

  ; --------------------------------------------------

  ; Insert MUI pages.

  ; Installer pages

  !insertmacro MUI_PAGE_WELCOME

  !insertmacro MUI_PAGE_LICENSE ButtonLinker.nsi

  !insertmacro MUI_PAGE_INSTFILES

  ; UnInstaller pages

  !define MUI_CUSTOMFUNCTION_UnGUIINIT Un.MyGUIInit

  !insertmacro MUI_UnPAGE_WELCOME

  !insertmacro MUI_UnPAGE_INSTFILES

  ; --------------------------------------------------

  ; Languages.

  !insertmacro MUI_LANGUAGE "SimpChinese"

  /*定义要创建的控件ID*/

  ;注意:ID不能重复,否则会产生未知错误!

  ;定义关于按钮

  !ifndef IDC_BUTTON

  !define IDC_BUTTON 1190

  !endif

  ;定义链接

  !ifndef IDC_LINKER

  !define IDC_LINKER 1200

  !endif

  ;定义复选框CheckBox2

  !ifndef IDC_CheckBox2

  !define IDC_CheckBox2 1210

  !endif

  ;定义复选框CheckBox3

  !ifndef IDC_CheckBox3

  !define IDC_CheckBox3 1220

  !endif

  ;定义关于菜单1

  !ifndef IDM_ABOUT1

  !define IDM_ABOUT1 1300

  !endif

  ;定义关于菜单2

  !ifndef IDM_ABOUT2

  !define IDM_ABOUT2 1301

  !endif

  ; --------------------------------------------------

  ; 创建公共函数

  !macro MYMACRO un

  Function ${un}AboutButton

  MessageBox MB_OK|MB_ICONINFORMATION "关于按钮!"

  FunctionEnd

  Function ${un}AboutMenu1

  MessageBox MB_OK|MB_ICONINFORMATION "关于菜单1!"

  FunctionEnd

  Function ${un}AboutMenu2

  MessageBox MB_OK|MB_ICONINFORMATION "关于菜单2!"

  FunctionEnd

  Function ${un}CheckBox3

  /*获取控件状态*/

  ;用法:${GetBoxState} 输出变量(0/1/error) 父窗口窗口句柄 控件ID

  ${GetBoxState} $0 $HWNDPARENT ${IDC_CheckBox3}

  ; MessageBox MB_OK|MB_ICONINFORMATION "$0"

  ${if} $0 == 0

  MessageBox MB_yesno|MB_ICONINFORMATION "取消选择?" idyes true idno false

  true:

  ${SetBoxState} 0 $HWNDPARENT ${IDC_CheckBox3}

  goto End

  false:

  ${SetBoxState} 1 $HWNDPARENT ${IDC_CheckBox3}

  goto End

  ${elseif} $0 == 1

  MessageBox MB_yesno|MB_ICONINFORMATION "选择?" idyes true2 idno false2

  true2:

  ${SetBoxState} 1 $HWNDPARENT ${IDC_CheckBox3}

  goto End

  false2:

  ${SetBoxState} 0 $HWNDPARENT ${IDC_CheckBox3}

  goto End

  ${else}

  MessageBox MB_OK|MB_ICONINFORMATION "$0!"

  ${endif}

  End:

  FunctionEnd

  Function ${un}MyGUIInit

  InitPluginsDir

  Pop $0

  Pop $1

  Pop $2

  Pop $3

  /*创建超级按钮*/

  ;获取“取消”按钮的位置

  ${GetDlgItemRect} $0 $1 $2 $3 $HWNDPARENT ${IDC_CANCEL}

  IntOp $2 $3 - $1

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

  ;参考“取消”的位置来创建超级按钮

  ${CreateButton2} "关于(&A)" 20 $1 80 $2 $HWNDPARENT ${IDC_BUTTON} ${un}AboutButton

  /*创建超级链接*/

  ;获取“取消”按钮的位置

  ${GetDlgItemRect} $0 $1 $2 $3 $HWNDPARENT ${IDC_CANCEL}

  IntOp $2 $3 - $1

  IntOp $1 $1 + 4

  IntOp $2 $2 - 1

  ;用法:${CreateLinker2} 显示文本 X轴位置 Y轴位置 宽度 高度 父窗口窗口句柄 控件ID 链接地址

  ;参考“取消”的位置来创建超级链接

  ${CreateLinker2} "访问我的主页" 120 $1 80 $2 $HWNDPARENT ${IDC_LINKER} "http://hi.baidu.com/xstar2008"

  /*创建超级复选框*/

  ;获取“取消”按钮的位置

  ${GetDlgItemRect} $0 $1 $2 $3 $HWNDPARENT ${IDC_CANCEL}

  IntOp $2 $3 - $1

  IntOp $1 $1 + 4

  IntOp $2 $2 - 1

  ;用法:${CreateCheckBox2} 显示文本 X轴位置 Y轴位置 宽度 高度 父窗口窗口句柄 控件ID 控件状态(0/1)

  ;参考“取消”的位置来创建超级复选框

  ${CreateCheckBox2} "CheckBox2" 200 $1 50 $2 $HWNDPARENT ${IDC_CheckBox2} 1

  ;用法:${CreateCheckBox3} 显示文本 X轴位置 Y轴位置 宽度 高度 父窗口窗口句柄 控件ID 控件状态(0/1) 目标函数

  ;参考“取消”的位置来创建超级复选框

  ${CreateCheckBox3} "CheckBox3" 250 $1 50 $2 $HWNDPARENT ${IDC_CheckBox3} 0 ${un}CheckBox3

  /*创建超级菜单*/

  ;用法:${CreateMenu2} 显示文本 菜单类型 父窗口窗口句柄 菜单ID 目标函数

  ${CreateMenu2} 0 ${MF_SEPARATOR} $HWNDPARENT 0 ${un}MyGUIInit

  ${CreateMenu2} "关于菜单1(&A)" ${MF_STRING} $HWNDPARENT ${IDM_ABOUT1} ${un}AboutMenu1

  ${CreateMenu2} "关于菜单2(&A)" ${MF_STRING} $HWNDPARENT ${IDM_ABOUT2} ${un}AboutMenu2

  FunctionEnd

  Function ${un}.onGUIEnd

  ButtonEvent::unload

  Linker::unload

  FunctionEnd

  ; --------------------------------------

  !macroend

  ; 插入安装/卸载函数

  !insertmacro MYMACRO ""

  !insertmacro MYMACRO "un."

  !insertmacro MYMACRO "un"

  Section "Dummy" SecDummy

  /*获取控件状态*/

  ;用法:${GetBoxState} 输出变量(0/1/error) 父窗口窗口句柄 控件ID

  ${GetBoxState} $0 $HWNDPARENT ${IDC_CheckBox2}

  StrCmp $0 1 0 +2

  Messagebox MB_OK "你想干嘛?"

  Sleep 1000

  WriteUninstaller "$Exediruninst.exe"

  SectionEnd

  Section Uninstall

  Delete "$InstdirUninst.exe"

  SectionEnd

时间: 2024-12-31 19:33:36

编写NSIS脚本语言实现超级按钮的相关文章

如何用PhotoShop脚本语言处理图片教程

利用Ps脚本我们可以简化工作流程,甚至能创造出让人震惊的数字艺术.卓越的设计师不是沉迷于幻想,而是将幻想变为现实的人.而技术,则是你的魔术棒... 原文作者Ross Aitken(个人教程站:http://psdlearning.com/) 这篇文章写得很详细,力图让每一个读者都能看懂.本文主要涉及到三块主要技术:调色.添加边框和阴影以及随机旋转.调色的方法是复制图片图层,然后平均模 糊取得该图片的平均色,其后用图片RGB通道直方图校验的方法取得该平均色的色值,并根据各通道颜色比例作出调整,然后

SOAP净化有线协议(三):用脚本语言编写服务

脚本 你是一个渴望永远站在技术最前沿的Java开发者吗?软件产业风云变幻,你渴望把握Web的未来,更重要的是,如何把自己数年的Java经验发挥到极致.要寻找这些问题的答案,你不必走得太远,答案就在于SOAP. SOAP(简单对象访问协议)是一种利用XML编码数据的有线协议,它为Java的平台无关性.可移植性带来了更高层次的协同操作能力.在这个关于SOAP的系列文章的第二篇中,我介绍了Apache SOAP.作为SOAP规范的实现之一,Apache SOAP简化了SOAP应用的构造.我们曾经用Ap

请问下能编写脚本语言来实现远程比对指纹识别的压力测试吗?

问题描述 请问下能编写脚本语言来实现远程比对指纹识别的压力测试吗? 请问下我怎么去实现呢?提供了Web service API 和指纹算法,怎么通过写脚本的方式去实现远程比对的指纹识别的压力测试,请高手们指点啊

图形脚本语言sikuli

简介                                                                                                                                                                                                                                                       

将Delphi作为ASP.NET的脚本语言

asp.net|脚本    将Delphi视为脚本语言       支持ASP.net的第一件事是让ASP.NET将Delphi视为脚本语言,让ASP.NET能够为各种ASP文件类型调用Delphi的.NET编译器.       ASP.NET要在IIS虚路径的根目录下寻找Web.config文件.下面是ASP.NET中使用Delphi作脚本语言的web.config配制文件内容:       <configuration>    <system.web>    <compi

ASP入门:认识ASP程序所使用的几种脚本语言

程序|脚本 在浏览器中通过查看源代码的方式是无法看到ASP源代码的,你只能看到由ASP文件输出的结果,而那些只是纯粹的HTML而已.这是因为,在结果被送回浏览器前,脚本已经在服务器执行了. 实例: 用ASP写文本 <html><body><%response.write("Hello World!")%></body></html> 向文本添加HTML <html><body><%response

轻狂写的桌面日历秀NSIS脚本供大家参考学习

原文 轻狂写的桌面日历秀NSIS脚本供大家参考学习 现在共享桌面日历秀的NSIS脚本,以便交流学习.此脚本实现的功能如下: 7-Zip打开看不到内容.自动读取原安装路径,如果有则不允许更改.取得编译日期.自定义欢迎页面文字.自定义图标.文件版本声明.多区段可选安装.-- 安装效果参考http://www.flighty.cn/html/soft/20101001_101.html 代码如下: 001 ;增加一个包含链接内容的7z压缩包到可执行文件头部,使7-Zip打开看不到其他内容. 002 !

javascript学习随笔(编写浏览器脚本 Navigator Scripting )_javascript技巧

在 HTML 中使用JavaScript JavaScript能以两种方式嵌入HTML: 作为语句和函数使用时,用 SCRIPT 标记 作为事件处理程序使用时,用 HTML 标记 SCRIPT 标记 使用SCRIPT标记把脚本嵌入在HTML中,格式如舷: <SCRIPT> _ JavaScript 语句</SCRIPT> LANGUAGE属性作为可选项,用于指定脚本语言,用法如下: <SCRIPT LANGUAGE="JavaScript"> _Ja

ASP程序中常用的脚本语言_应用技巧

在浏览器中通过查看源代码的方式是无法看到ASP源代码的,你只能看到由ASP文件输出的结果,而那些只是纯粹的HTML而已.这是因为,在结果被送回浏览器前,脚本已经在服务器执行了. 实例: 用ASP写文本 以下为引用的内容: <html> <body> <% response.write("Hello World!") %> </body> </html> 向文本添加HTML 以下为引用的内容: <html> <