2016-04-28 15 views

答えて

1

それはEnableMenuItem WinAPI functionを使用し、閉じるボタンを有効にするのは簡単です。 Inno Setup Disable close button (X)も参照してください。

閉じるボタンを実際に操作するのは難しいです。 Inno Setupウィンドウは、「Finished」ページで閉じるようには設計されていません。唯一の方法はおそらく、ExitProcess WinAPI functionを使用して強制的にプロセスを中止することです。 Exit from Inno Setup Installation from [code]を参照してください。

完全なコードは次のようになります。

function GetSystemMenu(hWnd: THandle; bRevert: Boolean): THandle; 
    external '[email protected] stdcall'; 

function EnableMenuItem(hMenu: UINT; uIDEnableItem, uEnable: UINT): Boolean; 
    external '[email protected] stdcall'; 

const 
    MF_BYCOMMAND = $0; 
    SC_CLOSE = $F060; 

procedure ExitProcess(exitCode:integer); 
    external '[email protected] stdcall'; 

procedure FormClose(Sender: TObject; var Action: TCloseAction); 
begin 
    Log('Exiting by user after installation'); 
    ExitProcess(1); 
end; 

procedure CurPageChanged(CurPageID: Integer); 
var 
    Menu: THandle; 
begin 
    if CurPageID = wpFinished then 
    begin 
    { Enable "close" button } 
    Menu := GetSystemMenu(WizardForm.Handle, False); 
    EnableMenuItem(Menu, SC_CLOSE, MF_BYCOMMAND); 
    { Make the "close" button working } 
    WizardForm.OnClose := @FormClose; 
    end; 
end; 
+1

素晴らしいです!できます。ありがとうございました。 –

関連する問題