如何使用NSIS将焦点设置为许可协议复选框控件

如何使用NSIS将焦点设置为许可协议复选框控件,nsis,Nsis,我想使用NSIS将默认焦点设置为许可协议页面中的“许可协议”复选框。然后taborder就可以工作了 请帮助我如何设置焦点 下面是我的代码片段: !include LogicLib.nsh !define MUI_TEXT_WELCOME_INFO_TITLE $(welcometitle) !define MUI_TEXT_WELCOME_INFO_TEXT $(welcometext) !insertmacro MUI_PAGE_WELCOME !define MUI_

我想使用NSIS将默认焦点设置为许可协议页面中的“许可协议”复选框。然后taborder就可以工作了

请帮助我如何设置焦点

下面是我的代码片段:

!include LogicLib.nsh

  !define MUI_TEXT_WELCOME_INFO_TITLE $(welcometitle)
  !define MUI_TEXT_WELCOME_INFO_TEXT $(welcometext)

  !insertmacro MUI_PAGE_WELCOME

  !define MUI_LICENSEPAGE_CHECKBOX ""
  !define MUI_INNERTEXT_LICENSE_BOTTOM ""
  !define MUI_INNERTEXT_LICENSE_TOP ""
  !define MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX ""

  !define MUI_TEXT_LICENSE_TITLE $(licensetitle)
  !define MUI_TEXT_LICENSE_SUBTITLE $(licensesubtitle)
  !define MUI_LICENSEPAGE_CHECKBOX_TEXT $(licensecheckboxtext)

  !insertmacro MUI_PAGE_LICENSE "C:\Program Files (x86)\NSIS\Docs\Modern UI 2\license.txt"

 !define MUI_DIRECTORYPAGE_TEXT_TOP $(mydirtoptext)
 !define MUI_TEXT_DIRECTORY_TITLE $(mydirtitle)
 !define MUI_TEXT_DIRECTORY_SUBTITLE $(mydirsubtitle)

  !insertmacro MUI_PAGE_DIRECTORY

  !insertmacro MUI_PAGE_INSTFILES

  !define MUI_TEXT_FINISH_INFO_TITLE $(Finishpagetitle)
  !define MUI_TEXT_FINISH_INFO_TEXT $(Finishpagesubtitle)

  !define MUI_FINISHPAGE_RUN ""
  !define MUI_FINISHPAGE_RUN_TEXT $(FinishonlineReg)

  !insertmacro MUI_PAGE_FINISH

  !insertmacro MUI_UNPAGE_INSTFILES

 ;--------------------------------
  !insertmacro MUI_LANGUAGE "English" 

; The stuff to install
Section "My TestApp (required)"
SectionEnd
报告说:

对于键盘导航,选项卡顺序应该按逻辑顺序流动,通常从左到右,从上到下

但如果你认为你必须强迫,那么你可以这样做:

!include WinMessages.nsh
!include MUI2.nsh

!insertmacro MUI_PAGE_WELCOME
!define MUI_LICENSEPAGE_CHECKBOX ""
!define MUI_PAGE_CUSTOMFUNCTION_SHOW myForceLicenseFocus
!insertmacro MUI_PAGE_LICENSE "${__FILE__}"
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE English

Function myForceLicenseFocus
!if ${MUI_SYSVERSION} >= 2.0
    FindWindow $0 "BUTTON" "" $mui.LicensePage
!else
    FindWindow $0 "#32770" "" $hWndParent
    FindWindow $0 "BUTTON" "" $0
!endif
System::Call 'USER32::SetFocus(pr0)'
!define /ifndef WM_CHANGEUISTATE 0x127
System::Call 'USER32::PostMessage(pr0,i${WM_CHANGEUISTATE},p0x30002,p0)' ; This forces the checkbox to display the focus rectangle
System::Call 'USER32::SetWindowPos(pr0,p0,i,i,i,i,i0x13)' ; Change tab order
FunctionEnd

再次感谢您@Anders。现在可以将焦点设置为“许可协议”复选框。正如您所说,标签顺序工作正常,从左到右、从上到下没有任何变化。