You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除NSIS安装程序中消息框标题栏的图标?

移除NSIS消息框标题栏图标的可行方法

以下几种方案可以实现移除消息框标题栏图标的效果:

  • 通过系统API修改默认MessageBox样式
    利用Windows API定位弹出的消息框窗口,修改其窗口样式以移除图标。代码示例:

    Function .onGUIInit
      MessageBox MB_OK "Hello, world!" /SD IDOK $0
      ; 定位消息框窗口
      FindWindow $1 "#32770" "" $HWNDPARENT
      ; 移除标题栏图标(清除WS_SYSMENU中的图标相关标志)
      System::Call "user32::SetWindowLongPtr(i $1, i -16, i (${GetWindowLongPtr} $1 -16) & ~0x800000) i .r2"
    FunctionEnd
    

    注:~0x800000用于剔除窗口样式中显示图标的位,SetWindowLongPtr负责更新窗口属性。

  • 自定义无图标对话框
    直接创建完全自定义的对话框,从根源避免默认图标。借助NSIS内置的Dialogs.nsh实现:

    !include "Dialogs.nsh"
    
    Function CustomMessageBox
      ; 创建无图标对话框(0x1008样式不含标题栏图标)
      Dialog::Create 0x1008 0 0 200 100 "Hello, world!" ""
      Dialog::AddButton 0x50000001 120 70 60 20 "确定"
      Dialog::Show
      Pop $0
    FunctionEnd
    
    Function .onGUIInit
      Call CustomMessageBox
    FunctionEnd
    
  • 使用nsDialogs插件创建自定义窗口
    借助NSIS的nsDialogs插件构建更灵活的无图标消息框:

    !include "nsDialogs.nsh"
    
    Function nsDialogsCustomMsgBox
      nsDialogs::Create 0x1008
      Pop $0
      ${If} $0 == error
        Abort
      ${EndIf}
      nsDialogs::SetText "Hello, world!"
      nsDialogs::AddButton 0x50000001 120 70 60 20 "确定"
      nsDialogs::Show
    FunctionEnd
    
    Function .onGUIInit
      Call nsDialogsCustomMsgBox
    FunctionEnd
    

内容的提问来源于stack exchange,提问作者Boramae

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 12:12:16