编写NSIS脚本语言实现超级按钮_编程语言综合教程-查字典教程网
编写NSIS脚本语言实现超级按钮
编写NSIS脚本语言实现超级按钮
发布时间:2016-03-04 来源:查字典编辑
摘要:很多开发工具中都提供了插件方便用户实现一些常见的功能,减少程序员的负担。今天小编就来跟大家介绍如何调用ButtonLinker插件实现超级按...

很多开发工具中都提供了插件方便用户实现一些常见的功能,减少程序员的负担。今天小编就来跟大家介绍如何调用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} "/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

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新编程语言综合学习
    热门编程语言综合学习
    编程开发子分类