首页 新闻 会员 周边

NSIS打包,如何控制滚动条位置,比如我想在用户许可界面打开时,自动滚动到底部,或其他某个位置

0
悬赏园豆:10 [待解决问题]

使用标准NSIS脚本或者nsNiuNiuSkin插件,实现滚动条自动滚

Finder~的主页 Finder~ | 初学一级 | 园豆:11
提问于:2024-02-04 08:51
< >
分享
所有回答(1)
0

在 NSIS 中,要实现在用户许可界面打开时自动滚动到底部或其他位置,你可以使用 SendMessage 命令发送 WM_VSCROLL 或 WM_HSCROLL 消息来控制滚动条的位置。以下是一个示例 NSIS 脚本,演示如何在用户许可界面打开时滚动到底部:

nsis
Copy code
!include "MUI2.nsh"

!define IDC_RICHEDIT 101
!define WM_VSCROLL 0x115
!define SB_BOTTOM 7

Function CustomPage
!insertmacro MUI_HEADER_TEXT "Custom Page" "This is a custom page."

nsDialogs::Create 1018
Pop $0

${If} $0 == error
    Abort
${EndIf}

${If} ${NSIS_PTR_SIZE} = 4
    System::Call "*(i,i,i,i,i,i,i,i)i.r0"
${Else}
    System::Call "*(i,i,i.r0)"
${EndIf}
Pop $1

nsDialogs::CreateControl "RICHEDIT" ${DEFAULT_STYLES}|${WS_VSCROLL}|${ES_MULTILINE}|${ES_AUTOVSCROLL}|${WS_TABSTOP} ${DEFAULT_EX_STYLES}|${WS_EX_CLIENTEDGE} 0 0 100% 100% "" $1

SendMessage $1 ${WM_VSCROLL} ${SB_BOTTOM} 0 ; 滚动到底部

nsDialogs::Show

FunctionEnd

!define MUI_CUSTOMFUNCTION_GUIINIT CustomPage

!insertmacro MUI_PAGE_LICENSE "${NSISDIR}\Docs\Modern UI\license.txt"

!insertmacro MUI_PAGE_INSTFILES

!insertmacro MUI_LANGUAGE English

在这个例子中,我们使用了 SendMessage 命令,通过发送 WM_VSCROLL 消息,将滚动条滚动到底部。你可以根据需要自定义消息和位置。在实际的 NSIS 脚本中,你需要找到许可协议页面的控件 ID,并将其替换为 SendMessage 中的相应控件 ID。

请注意,此示例使用 MUI2 插件。如果你使用的是 MUI 插件,请相应地调整。此外,具体的控件 ID 和消息类型可能取决于你使用的 NSIS 插件或主题。

Technologyforgood | 园豆:5686 (大侠五级) | 2024-02-04 20:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册