Inno Setup禁用关闭按钮(X)

时间:2016-02-12 11:43:33

标签: inno-setup

如何禁用关闭按钮(borderstyle)?

我想将它与系统菜单中隐藏“关于设置”命令结合起来:
Inno Setup - BorderIcons dropdown menu

1 个答案:

答案 0 :(得分:0)

使用EnableMenuItem WinAPI function

function GetSystemMenu(hWnd: THandle; bRevert: Boolean): THandle;
  external 'GetSystemMenu@user32.dll stdcall';

function EnableMenuItem(hMenu: UINT; uIDEnableItem, uEnable: UINT): Boolean;
  external 'EnableMenuItem@user32.dll stdcall';

const
  MF_GRAYED = $1;
  MF_BYCOMMAND = $0;
  SC_CLOSE = $F060;

procedure DisableCloseButton;
var
  Menu: THandle;
begin
  Menu := GetSystemMenu(WizardForm.Handle, False);
  EnableMenuItem(Menu, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
end;

您必须稍后调用DisableCloseButton 而不是InitializeWizard事件函数。

可能有更好的地方可以调用它,但为了简单起见,您可以从CurPageChanged调用它:

procedure CurPageChanged(CurPageID: Integer);
begin
  DisableCloseButton;
end;

但请注意,您需要在InitializeWizard中保留the code to hide "About Setup" command,因为只需要调用一次(并且它可以正常工作)。

截图显示两个代码组合在一起:

enter image description here