JimInNH
26th January 2005 22:07 UTC
? Dyamically changing text with/without custom fields ?
I am looking for a way to show text within a single NSIS dialog that changes over time. E.g. "Starting...", "Now doing X", "Now doing Y", etc.
I've been trying with InstallOptions but the place where I would execute the loop getting the text to display does not execute until the user clicks on Next.
I tried handling in a leave page but that doesn't seem to work either.
Can this be done with NSIS? I don't see anything like it in examples or how to's or even as a previous question in the list for the last month.
Joel
26th January 2005 23:28 UTC
Can..but you need HWND of the control, use the WM_SETTEXT nor SetWindowText (system plugin), also Sleep ;)... but the rest of the installation proc. can be delay also... you might wanna try making a plugin and subclassing the dialog nor hooking :D :igor:
pospec
14th November 2007 12:17 UTC
My goal was to rewrite text from one textbox to second textbox dynamically. I used System::Call user32::SetWindowText. I am using nsDialogs.
nsh
Name "nsDialogs MyExample"
>OutFile "nsDialogs MyExample.exe"
>Page custom nsDialogsPage
>Var EDIT1
>Var EDIT2
>Function nsDialogsPage
nsDialogs
::Create /NOUNLOAD 1018
Pop$0
${NSD_CreateText} 0 35 100% 12u "type here"
Pop $EDIT1
GetFunctionAddress$0 OnChange1
nsDialogs::OnChange /NOUNLOAD $EDIT1 $0
${NSD_CreateText} 0 70 100% 12u '...'
Pop $EDIT2
nsDialogs::Show
FunctionEnd
>Function OnChange1
System::Call user32::GetWindowText(i$EDIT1,t.r0,i${NSIS_MAX_STRLEN})
System::Call user32::SetWindowText(i$EDIT2,tr0)
>FunctionEnd
Section
SectionEnd
>
I hope that it work's 100% OK ;)