【问题标题】:Change loading bar colour in NSIS Installer在 NSIS 安装程序中更改加载栏颜色
【发布时间】:2012-09-27 03:11:35
【问题描述】:

如何在 NSIS 安装程序的安装文件页面中更改加载栏的颜色?

以下尝试将消息 PBM_SETBARCOLOR 发送到加载栏窗口但加载栏的颜色从未改变?

!include MUI2.nsh
!include WinMessages.nsh

InstallDir  "abc"
Name        "def"        
OutFile     "def.exe"

!define MUI_PAGE_CUSTOMFUNCTION_SHOW InstFilesPageShow
!insertmacro MUI_PAGE_INSTFILES

!macro RefreshWindow HWND IDC
    GetDlgItem $R0 ${HWND} ${IDC}
    ShowWindow $R0 ${SW_HIDE}
    ShowWindow $R0 ${SW_SHOW}
!macroend

Function InstFilesPageShow

    SendMessage 1004 ${PBM_SETBARCOLOR} 0 "COLORREF(0,200,200)" #0xFF0000
    System::Call `user32::SendMessage(i R1, i ${PBM_SETBARCOLOR}, i 0, i COLORREF(0,0,0))`  #System::Call `user32::SetWindowPos(i R8, i ${HWND_TOP}, i 0, i 0, i ${w}, i ${h}, i ${SWP_NOMOVE})`
    #!insertmacro RefreshWindow $HWND 1004
    #!insertmacro RefreshWindow $mui.InstallPage 1004
    !insertmacro RefreshWindow $HWNDPARENT 1004

FunctionEnd

Section "Dummy" 
    DetailPrint "Test"
SectionEnd

【问题讨论】:

  • COLORREF 是 Win32 类型,不是宏/函数...

标签: winapi installation nsis


【解决方案1】:
XPStyle on
Page instfiles "" instfilesShow

!include WinMessages.nsh

Function instfilesShow
FindWindow $0 "#32770" "" $HWNDPARENT
GetDlgItem $0 $0 1004
System::Call UxTheme::SetWindowTheme(ir0,w"",w"")
SendMessage $0 ${PBM_SETBARCOLOR} 0 0x11aaee
FunctionEnd

【讨论】:

    【解决方案2】:

    恐怕你无法做到这一点:在PBM_SETBARCOLOR documentation,MSDN 状态

    启用视觉样式后,此消息无效。

    顺便说一句,在您的 RefreshWindow 宏中,您从其 ID 中错误地获取了控制句柄。 NSIS 文档告诉

    如果要获取内部对话框的控件句柄,首先使用FindWindow user_var(output) "#32770" "" $HWNDPARENT获取内部对话框的句柄。

    所以你可以这样写:

    FindWindow $R1 "#32770" "" $HWNDPARENT ;$R1 = handle of the inner dialog
    GetDlgItem $R0 $R1 ${IDC} ;get the handle of control from its ID
    ShowWindow $R0 ${SW_HIDE}
    ShowWindow $R0 ${SW_SHOW}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多