Installation 在NSIS对话框页面中添加自定义标签,有条件地显示和隐藏NSIS MUI目录页面中的标签,如何获取标签ID

Installation 在NSIS对话框页面中添加自定义标签,有条件地显示和隐藏NSIS MUI目录页面中的标签,如何获取标签ID,installation,label,custom-controls,nsis,nsis-mui,Installation,Label,Custom Controls,Nsis,Nsis Mui,如何隐藏NSIS安装程序目录页对话框中添加的自定义标签。 标签是使用资源黑客添加的,其id为1300 如何有条件地更改标签的文本 如果用户选择安装演示,则标签文本应为“演示”,如果用户选择安装更新,则标签文本应为“更新” 我已经添加了2个标签,现在我将相应地隐藏和显示它们。Label1 ID是1300,Label2 ID是1301 # Occurs on Directory page show. Function DirectoryShow ${If} $InstallType == D

如何隐藏NSIS安装程序目录页对话框中添加的自定义标签。 标签是使用资源黑客添加的,其id为1300

如何有条件地更改标签的文本

如果用户选择安装演示,则标签文本应为“演示”,如果用户选择安装更新,则标签文本应为“更新”

我已经添加了2个标签,现在我将相应地隐藏和显示它们。Label1 ID是1300,Label2 ID是1301

# Occurs on Directory page show.
Function DirectoryShow

   ${If} $InstallType == DEMO

    GetDlgItem $5 $HWNDPARENT 1300
MessageBox MB_OK "ID of First Label is $5"  ----IT SHOWS '0' INSTEAD OF SHOWING 1300

 ${NSD_SetText} $5 "INSTALLING DEMO OF SOFTWARE!!!!!!!!!!!!!!!!!" 

GetDlgItem $6 $HWNDPARENT 1301
ShowWindow $6 ${SW_HIDE}

;GetDlgItem $1 $HWNDPARENT 2
;ShowWindow $0 ${SW_SHOW}
;ShowWindow $1 ${SW_HIDE}

 ${Else}

GetDlgItem $7 $HWNDPARENT 1300
ShowWindow $7 ${SW_HIDE}

GetDlgItem $8 $HWNDPARENT 1301
 ${NSD_SetText} $8 "UPDATING EXISTING SOFTWARE !!!!!!!!!!!!!!!!!" 

${EndIf}
FunctionEnd 

如何获取这些标签的ID

NSIS使用子对话框托管实际页面:

首先需要获取内部对话框的句柄,然后才能找到标签:

FindWindow $0 "#32770" "" $HWNDPARENT ;(This is documented under section 4.9.14.6 in the help file)
GetDlgItem $5 $0 1300

NSIS使用子对话框托管实际页面:

首先需要获取内部对话框的句柄,然后才能找到标签:

FindWindow $0 "#32770" "" $HWNDPARENT ;(This is documented under section 4.9.14.6 in the help file)
GetDlgItem $5 $0 1300

您需要标签句柄,而不是id。1300是控件id,GetDlgItem将为您提供(窗口)句柄,也称为HWND。您需要标签句柄,而不是id。1300是控件id,GetDlgItem将为您提供(窗口)句柄,也称为HWND。@Anders:如何根据我的选择设置标签文本?先生,这是做什么的--{124;}您已经知道如何设置文本,WM_SETTEXT()${{124;}是${IfThen}和logiclib使用的语法的一部分,看看为什么您要使这变得比必须的更难?你已经拥有了所有的部分,FindWindow+GetDlgItem+ShowWindow()@Anders:我如何根据我的选择设置标签文本?先生,这是做什么的--{|}你已经知道如何设置文本,WM_SETTEXT()${}是${IfThen}和logiclib使用的语法的一部分,看看你为什么要让它变得更难?你已经拥有了所有的片段,FindWindow+GetDlgItem+ShowWindow()