GetCaretPos
NSISインストーラーからUser32.dllの関数を呼び出そうとしていますが、メモリロケーションへの無効なアクセスエラーが発生する可能性があります。
これが私のコードです:
Function fixUpRegKeyText
Exch $0 ; HWND to text box
Push $1 ; text of edit box
Push $2 ; pointer to point structure
Push $3 ; getlasterror result
System::Alloc 16 ;struct long, long
pop $2
;messageBox MB_OK $2
;get the caret position
System::Call "User32::GetCaretPos(p .r2) i.. ? e"
pop $3
messageBox MB_OK $3 ; 998!
${NSD_GetText} $0 $1
Push $1
call StrUpper
Pop $1
${NSD_SetText} $0 $1
; now set the caret position
;System::call "user32::SetCaretPos(p s.) i .."
Pop $3
Pop $2
Pop $1
Pop $0
FunctionEnd
編集WindowsAPIを使用してテキストカレットを移動することに興味がある人のために、私はそれについてブログに書きました。アンダースの答えを使用すると、NSISスクリプトでこれを行うのは簡単です。