remplissez zone de texte répertoire sur le bouton clic dans MUI Installer SNI, à l'aide de plug-in ButtonEvent

StackOverflow https://stackoverflow.com/questions/5803182

Question

i ont ajouté le bouton personnalisé à l'aide Resource Hacker sur le MUI Annuaire de l'installateur, maintenant je veux que lorsque le bouton est cliqué la valeur par défaut Textbox où l'utilisateur entre le InstallDir (le chemin où l'application est installée), est rempli d'un texte spécifié. S'il vous plaît aidez-moi avec le code?

J'utilise le plug-in ButtonEvent, mais je ne sais pas ce code à écrire dans le gestionnaire d'événements. Actuellement je suis simplement afficher une boîte de message lorsque le bouton est cliqué pour faire en sorte que l'événement fonctionne. S'il vous plaît aider.

!define IDC_BUTTON_SETPATH 1200 (1200 is the ID OF THE BUTTON ADDED from Resource hacker)

;Pages

  !insertmacro MUI_PAGE_WELCOME

  !define MUI_PAGE_CUSTOMFUNCTION_SHOW DirectoryShow
  !define MUI_PAGE_CUSTOMFUNCTION_LEAVE DirectoryLeave

   !insertmacro MUI_PAGE_DIRECTORY

 !insertmacro MUI_PAGE_COMPONENTS
 !insertmacro MUI_PAGE_INSTFILES
 !insertmacro MUI_PAGE_FINISH

;--------------------------------

Function buttonclicked
   MessageBox MB_OK|MB_ICONEXCLAMATION "You Clicked Me "

  Abort

FunctionEnd

# Occurs on installer UI initialization.
Function myGuiInit

  # Create event handler for our parent window button.
  GetFunctionAddress $R3 buttonclicked
  ButtonEvent::AddEventHandler ${IDC_BUTTON_SETPATH} $R3

FunctionEnd

------------------------ NOUVEAU CODE RÉVISÉ PART-- POUR TROIS BOUTONS DE MESURE ---------- ---------

!include MUI2.nsh
; --------------------------------------------------

  !define IDC_BUTTON_CDRIVEPATH         1200
  !define IDC_BUTTON_DDRIVEPATH         1201
  !define IDC_BUTTON_EDRIVEPATH         1202

; --------------------------------------------------

# The event handler for our parent button is added in MyGUIInit.
!define MUI_CUSTOMFUNCTION_GUIINIT myGuiInit
  !define MUI_HEADERIMAGE
  !define MUI_HEADERIMAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Header\pksicon.bmp" ; optional
  !define MUI_WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\pksleftimage.bmp" ;
;--------------------------------


XPStyle on


;Interface Settings

  !define MUI_ABORTWARNING

;--------------------------------
;Pages

  !insertmacro MUI_PAGE_WELCOME
  !insertmacro MUI_PAGE_LICENSE "${NSISDIR}\Docs\Modern UI\licensefile.txt"
!define MUI_PAGE_CUSTOMFUNCTION_SHOW DirectoryShow

   !insertmacro MUI_PAGE_DIRECTORY
 !insertmacro MUI_PAGE_COMPONENTS
 !insertmacro MUI_PAGE_INSTFILES
 !insertmacro MUI_PAGE_FINISH

 ; --------------------------------------------------

; Languages.

!insertmacro MUI_LANGUAGE English

; --------------------------------------------------


!macro SetDirPageInstallDir text
!if "${MUI_SYSVERSION}" < "2.0"
Push $0
FindWindow $0 "#32770" "" $HWNDPARENT
GetDlgItem $0 $0 0x3FB
SendMessage $0 ${WM_SETTEXT} 0 "STR:${text}"
Pop $0
!else
SendMessage $mui.DirectoryPage.Directory ${WM_SETTEXT} 0 "STR:${text}"
!endif
!macroend


# Called when the CDRIVEPATH button is pressed.
Function CDRIVEPATH

  MessageBox MB_OK|MB_ICONEXCLAMATION "The Software will be installed in : C:\ "

;In buttonclicked handler
!insertmacro SetDirPageInstallDir "C:\"

FunctionEnd
;--------------------------------

Function DDRIVEPATH

  MessageBox MB_OK|MB_ICONEXCLAMATION "The Software will be installed in : D:\ "

;In buttonclicked handler
!insertmacro SetDirPageInstallDir "D:\"

FunctionEnd
;--------------------------------
Function EDRIVEPATH

  MessageBox MB_OK|MB_ICONEXCLAMATION "The Software will be installed in : E:\ "

;In buttonclicked handler
!insertmacro SetDirPageInstallDir "E:\"

FunctionEnd
;--------------------------------

InstallDir $INSTDIR


# Occurs on installer UI initialization.
Function myGuiInit

  # Create event handler for our parent window button.
  GetFunctionAddress $R0 CDRIVEPATH
  ButtonEvent::AddEventHandler ${IDC_BUTTON_CDRIVEPATH} $R0

;  GetFunctionAddress $R1 EDRIVEPATH  **-----this line causes error**
;   ButtonEvent::AddEventHandler ${IDC_BUTTON_DDRIVEPATH} $R1   -----this line causes error

;  GetFunctionAddress $R2 EDRIVEPATH  **-----this line causes error**
;  ButtonEvent::AddEventHandler ${IDC_BUTTON_EDRIVEPATH} $R2  -----this line causes error



FunctionEnd

;------------------------------------------------

# Occurs on Directory page show.
Function DirectoryShow

  # Create event handler for our Directory page button. /NOTIFY makes
  # the button move to the next page when clicked.
  ButtonEvent::AddEventHandler ${IDC_BUTTON_CDRIVEPATH} 

  ButtonEvent::AddEventHandler ${IDC_BUTTON_DDRIVEPATH} 

  ButtonEvent::AddEventHandler ${IDC_BUTTON_EDRIVEPATH} 


  # Disable next button.
  GetDlgItem $R0 $HWNDPARENT 1
  EnableWindow $R0 0


FunctionEnd 


 ; --------------------------------------------------

;General

  ;Name and file
 Name NEW_FILL_TEXTBOX_BUTTONCLICK
OutFile NEW_FILL_TEXTBOX_BUTTONCLICK.exe


 Section

    DetailPrint "SUCCESSFULLY INSTALLED"

SectionEnd
Était-ce utile?

La solution

Vous n'avez pas dit quelle version du MUI que vous utilisez, cette macro doit gérer à la fois ...

!macro SetDirPageInstallDir text
!if "${MUI_SYSVERSION}" < "2.0"
Push $0
FindWindow $0 "#32770" "" $HWNDPARENT
GetDlgItem $0 $0 0x3FB
SendMessage $0 ${WM_SETTEXT} 0 "STR:${text}"
Pop $0
!else
SendMessage $mui.DirectoryPage.Directory ${WM_SETTEXT} 0 "STR:${text}"
!endif
!macroend


;In buttonclicked handler
!insertmacro SetDirPageInstallDir "$programfiles\Hello World"
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top