如何禁用关闭按钮(borderstyle)?
我想将它与系统菜单中隐藏“关于设置”命令结合起来:
Inno Setup - BorderIcons dropdown menu
答案 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,因为只需要调用一次(并且它可以正常工作)。
截图显示两个代码组合在一起: