能否为NSIS的MUI_LICENSEPAGE_TEXT_BOTTOM添加超链接?附插件疑问
NSIS许可页底部文本添加超链接及Linker插件使用问题解答
一、Linker插件能否用于许可页底部文本
- 可以。许可页底部的文本本质是静态标签控件(STATIC类),Linker插件支持为这类静态标签添加超链接,只要能获取到该控件的句柄即可。
二、关于FindWindow $0 "#32770" "" $HWNDPARENT的说明
#32770不是窗口编号,它是Windows系统中通用对话框的类名(所有标准对话框都使用这个类名)。- 要定位许可页底部的文本控件,不能直接用
FindWindow,应该用FindWindowEx从许可页对话框(父窗口句柄为$HWNDPARENT)中查找子控件:- 可通过控件文本定位:匹配
MUI_LICENSEPAGE_TEXT_BOTTOM定义的内容 - 也可通过MUI预设的控件ID定位(许可页底部文本控件ID为
1043)
- 可通过控件文本定位:匹配
完整实现示例
!include "MUI2.nsh" !include "Linker.nsh" !define license "license.txt" !define MUI_LICENSEPAGE_TEXT_BOTTOM "Click this link -> http://www.google.com/" !define MUI_PAGE_CUSTOM_SHOW LicensePage_Show !insertmacro MUI_PAGE_LICENSE "${license}" !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_LANGUAGE "English" Function LicensePage_Show ; 通过控件ID查找许可页底部文本控件句柄 FindWindowEx $0 $HWNDPARENT "" "" 1043 ${If} $0 != 0 ; 为控件设置超链接 Linker::LinkWindow $0 "http://www.google.com/" Pop $1 ; 捕获返回值,可根据需求处理 ${EndIf} FunctionEnd
内容的提问来源于stack exchange,提问作者Robert Higgins
相关产品推荐
相关产品推荐

