Je viens de modifier mon exemple précédent pour y adjoindre la création d'une clé de registre en utilisant la Lib DROOPY (pour ceux qui voudraient tester)
Voici l'exemple que je trouve concluant
Code : Tout sélectionner
Enumeration
#win_0
#btn_create
#btn_RegKey
EndEnumeration
Procedure.s ApplicationDir()
appdir$ = Space(255)
GetCurrentDirectory_(255, @appdir$)
If Right(appdir$, 1) <> "\" ; si l'adresse ne finit pas par "\"
appdir$ = appdir$ + "\" ; on rajoute le "\"
EndIf
ProcedureReturn appdir$
EndProcedure
Global USERPASS$, DateCreated$, AppliDir$
DateCreated$ = "19/05/05"
AppliDir$ = ApplicationDir()
Procedure Protect_INI()
If OpenPreferences("Protect.ini")=0
USERPASS$ = InputRequester("CHOIX D'UN MOT DE PASSE","Vous devez choisir un mot de passe :","")
EndIf
If USERPASS$ > ""
a$ = "Vous avez choisi le mot de passe suivant : " + Chr(10)
a$ + USERPASS$
If CreatePreferences("Protect.ini")
WritePreferenceString("USERPASS",USERPASS$)
WritePreferenceString("DATE",DateCreated$)
ClosePreferences()
EndIf
buffer.s = Space(#MAX_PATH)
buffer.s = AppliDir$+"Protect.ini"; créé dans répertoire courant
SetFileAttributes_(@buffer.s,#FILE_ATTRIBUTE_READONLY)
If RegCreateKeyValue("HKEY_LOCAL_MACHINE\SOFTWARE\Test\SubKeyAuto","USERPASS",USERPASS$,#REG_SZ,".")=0
MessageRequester("ERREUR","La clé n'a pu être créée")
Else
MessageRequester("REUSSI","La clé a été créée")
EndIf
Else
a$ = "Vous n'avez choisi aucun mot de passe !"+Chr(13)+"Vous ne pouvez continuer."
MessageRequester("Information",a$,64)
End
EndIf
MessageRequester("Information",a$,64)
EndProcedure
Procedure fenetre()
If OpenPreferences("Protect.ini")<>0
USERPASS$ = ReadPreferenceString ("USERPASS", "")
DateCreated$ = ReadPreferenceString ("DATE", "")
Else
Protect_INI()
EndIf
ClosePreferences()
If RegValueExists("HKEY_LOCAL_MACHINE\SOFTWARE\Test\SubKeyAuto","USERPASS",".")=0
MessageRequester("ERREUR","Un élément est défaillant ou manquant"+Chr(13)+"Le programme est corrompu et va se fermer !")
End
EndIf
If OpenWindow(#win_0,0,0,200,100, #PB_Window_SystemMenu| #PB_Window_ScreenCentered |#PB_Window_TitleBar, "Test Protect ini") And CreateGadgetList(WindowID(#win_0))
ButtonGadget(#btn_create, 50, 30, 100, 20, "Creer ini et RegKey")
ButtonGadget(#btn_RegKey, 50, 60, 100, 20,"Voir RegKey")
EndIf
EndProcedure
fenetre()
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_EventGadget
Select EventGadgetID()
Case #btn_create : Protect_INI()
Case #btn_RegKey
If RegValueExists("HKEY_LOCAL_MACHINE\SOFTWARE\Test\SubKeyAuto","USERPASS",".")<>0
MessageRequester("Key Value","La valeur de votre clé est : "+Chr(13)+USERPASS$)
Else
MessageRequester("Erreur","Aucune clé ni de valeur associée n'a été trouvée")
EndIf
EndSelect
Case #PB_Event_CloseWindow : Quitter = 1
EndSelect
Until Quitter
End
@Droopy , Une chose, pour récupérer la valeur de la clé (ici USERPASS$) la fonction RegValueExists() ne le permet pas, elle récupère seulement le nom de la valeur. Peut-on la récupérer autrement ?
Et dans le cas présent, quel type est le plus adapté ? #REG_SZ or #REG_DWORD ?