0

私は以下のコードを持っています:

Function fnc_custom_page
GetDlgItem $0 $HWNDPARENT 2 ; Find cancel button
System::Call *(i,i,i,i)i.r1
System::Call 'USER32::GetWindowRect(ir0,ir1)'
System::Call *$1(i.r2,i.r3,i.r4,i.r5)
IntOp $5 $5 - $3 ;height
IntOp $4 $4 - $2 ;width
IntOp $4 $4 + 50
System::Call 'USER32::ScreenToClient(i$HWNDPARENT,ir1)'
System::Call *$1(i.r2,i.r3)
System::Free $1
IntOp $2 $2 - $4 ;x
IntOp $2 $2 - 8  ;x+padding
System::Call 'USER32::CreateWindowEx(i0,t "Button",t "Open tch",i${WS_CHILD}|${WS_VISIBLE}|${WS_TABSTOP},ir2,ir3,ir4,ir5,i $HWNDPARENT,i 0x666,i0,i0)i.r0'
SendMessage $HWNDPARENT ${WM_GETFONT} 0 0 $1
SendMessage $0 ${WM_SETFONT} $1 1
GetFunctionAddress $R0 fnc_tch
ButtonEvent::AddEventHandler 0x666 $R0

nsDialogs::Show
FunctionEnd

Function fnc_tch
Exec "$INSTDIT\tch.exe" 
Abort
FunctionEnd

ページが1つしかないので、他に何も表示したくありません。[tchを開く]をクリックすると、tch.exeが実行され、インストーラーが終了します。しかし、インストーラーを終了させることができません。任意の入力をお願いします。

上記のコードのソース:NSIS:カスタムボタンを左下隅に追加してクリックを処理するにはどうすればよいですか?

4

1 に答える 1

2

ほとんどの場合、使用できますQuitが、プラグイン関連のコールバック関数はそれを処理しません(終了フラグはプラグインAPIの一部ではありません)。

別の方法は、閉じるボタンのクリックをエミュレートすることです。

!include WinMessages.nsh
SendMessage $HwndParent ${WM_CLOSE} 0 0
于 2013-02-28T23:54:59.063 に答える