2016-04-28 4 views

Antwort

1

Es ist einfach, die Schließen-Schaltfläche zu aktivieren, EnableMenuItem WinAPI function verwenden. Siehe auch Inno Setup Disable close button (X).

Schwierig ist es, die Schließen-Taste tatsächlich funktionieren zu lassen. Das Fenster "Inno Setup" wurde nicht so entworfen, dass es auf der Seite "Finished" geschlossen wird. Die einzige Möglichkeit besteht wahrscheinlich darin, den Prozess unter Verwendung von ExitProcess WinAPI function zwangsweise abzubrechen. Siehe .

würde Der vollständige Code sein:

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

Excellent! Es klappt. Vielen Dank. –

Verwandte Themen