Page 1 sur 1

des fonctions d'éditions de registre !

Publié : mer. 26/sept./2007 13:09
par Golfy
Parce que RegINI_Lib est compilé pour PB 3.93 et que les API c'est un petit peu plus sensible et peu documenté...

Publié : mer. 26/sept./2007 13:46
par Progi1984
Cherche PBOSL_Registry, et tu auras ce que tu souhaites :)

Publié : mer. 26/sept./2007 13:52
par Flype
purebasic n'a pas vocation a implémenter des fonctions spécifiques à windows.

pas de base de registres sous linux et macos.

une userlib, ou une include suffit.

Publié : mer. 26/sept./2007 15:29
par Backup
tiens !!


 
; By Dobro
Declare.s ReadRegKey(OpenKey.l,SubKey.s,ValueName.s)
Declare.l WriteRegKey(OpenKey.l,SubKey.s,keyset.s,keyvalue.s)
Declare.l WritebinaryRegKey(OpenKey.l,SubKey.s,keyset.s,keyvalue.l)

; tout ce passe dans le registre
;HKEY_CURRENT_USER\Control Panel\Mouse\

; MouseThreshold1 et MouseThreshold2
; défini le nombre maximal de pixels que la souris peut déplacer
; entre des interruptions de souris avant que le système modifie la relation entre le mouvement de souris et curseur.
; Si le mouvement de souris dépasse le seuil défini par MouseThreshold1
; et Si MouseSpeed est supérieur à 0, déplace le curseur selon le double de la vitesse normale.
; Si le mouvement de souris dépasse le seuil défini par MouseThreshold2
; et Si MouseSpeed est 2, déplace le curseur selon 4 fois la vitesse normale.

; définissez la valeur de MouseSpeed (vitesse) à 1 ou 2 (1 double la vitesse normale, 2 quadrupler la vitesse normale).



;on lit la valeur actuel de MouseThreshold1
Threshold1$=ReadRegKey( #HKEY_CURRENT_USER , "Control Panel\Mouse\" , "MouseThreshold1" )

;on lit la valeur actuel de MouseThreshold2
Threshold2$=ReadRegKey( #HKEY_CURRENT_USER , "Control Panel\Mouse\" , "MouseThreshold2" )

;on lit la valeur actuel de Mouse vitesse
vitesse$=ReadRegKey( #HKEY_CURRENT_USER , "Control Panel\Mouse\" , "MouseSpeed" )


Debug "Threshold1 :" +Threshold1$
Debug "Threshold2 :" +Threshold2$
Debug "vitesse :" +vitesse$







; *************************************************************************************************
; Lire une chaine dans le registre
Procedure.s ReadRegKey(OpenKey.l,SubKey.s,ValueName.s) ; ====================================== ReadRegKey
    
     ; key.s=ReadRegKey(#HKEY_LOCAL_MACHINE,"SOFTWARE\Zone Labs\ZoneAlarm","InstallDirectory")
     ;
    hKey.l=0
    keyvalue.s= Space (255)
    DataSize.l=255
    
     If RegOpenKeyEx_ (OpenKey,SubKey,0, #KEY_READ ,@hKey)
        keyvalue= ""
     Else
         If RegQueryValueEx_ (hKey,ValueName,0,0,@keyvalue,@DataSize)
            keyvalue= ""
         Else
            keyvalue= Left (keyvalue,DataSize-1)
         EndIf
         RegCloseKey_ (hKey)
     EndIf
    
     ProcedureReturn keyvalue
EndProcedure

; ecrire une chaine dans le registre
Procedure.l WriteRegKey(OpenKey.l,SubKey.s,keyset.s,keyvalue.s) ; ------------------------ WRITE KEY
    
     ; result.l=WriteRegKey(#HKEY_LOCAL_MACHINE,"SOFTWARE\Test Program Name","Test","TestValue")
    
    hKey.l=0
     If RegCreateKey_ (OpenKey,SubKey,@hKey)=0
        Result=1
        DataSize.l= Len (keyvalue)
         If RegSetValueEx_ (hKey,keyset,0, #REG_SZ ,@keyvalue,DataSize)=0
            Result=2
         EndIf
         RegCloseKey_ (hKey)
     EndIf
     ProcedureReturn Result
     ;returns 0 if error / could not open or create SubKey
     ;returns 1 if error / could not write new value
     ;returns 2 if Success!!
    
EndProcedure

; ecrire un long dans le registre
Procedure.l WritebinaryRegKey(OpenKey.l,SubKey.s,keyset.s,keyvalue.l) ; ------------------------ WRITE KEY
    
     ; result.l=WriteRegKey(#HKEY_LOCAL_MACHINE,"SOFTWARE\Test Program Name","Test","TestValue")
    
    hKey.l=0
     If RegCreateKey_ (OpenKey,SubKey,@hKey)=0
        Result=1
        DataSize.l=4 ; nombre d'octets ecrit !!
         If RegSetValueEx_ (hKey,keyset,0, #REG_BINARY ,@keyvalue,DataSize)=0
            Result=2
         EndIf
         RegCloseKey_ (hKey)
     EndIf
     ProcedureReturn Result
     ;returns 0 if error / could not open or create SubKey
     ;returns 1 if error / could not write new value
     ;returns 2 if Success!!
    
EndProcedure

;*********************************************************************************************

Re: des fonctions d'éditions de registre !

Publié : mer. 26/sept./2007 17:25
par Dr. Dri
Golfy a écrit :peu documenté...
Il suffit de savoir où chercher

Dri ;)

Publié : mer. 26/sept./2007 20:34
par Golfy
Bon... apparemment la recherche sur le mot 'registry' ou 'registre' ne m'a pas donné autant de résultat que vous trois :lol:

Au vu des réponses très juste, je clos le sujet (et je me fait tout petit... :oops: )


PS : enfin, un modo peut-il clore le sujet SVP ?

Publié : mer. 26/sept./2007 20:55
par Dr. Dri
On parle du registre windows, il suffit de chercher la doc chez microsoft.
En trois clics c'est trouvé :

http://msdn2.microsoft.com/en-us/library/ms724880.aspx

Dri ;)

Publié : ven. 28/sept./2007 13:37
par Golfy
Dobro a écrit :tiens !!


 
; By Dobro
Declare.s ReadRegKey(OpenKey.l,SubKey.s,ValueName.s)
Declare.l WriteRegKey(OpenKey.l,SubKey.s,keyset.s,keyvalue.s)
Declare.l WritebinaryRegKey(OpenKey.l,SubKey.s,keyset.s,keyvalue.l)
Est-ce que les constantes existent toutes sous Purebasic ?
#HKEY_CLASSES_ROOT, #HKEY_CURRENT_USER et #HKEY_LOCAL_MACHINE

je ne trouve rien dans l'aide (chapitre des constantes) :oops:

Publié : ven. 28/sept./2007 18:34
par Dr. Dri
Pour savoir si une constante est définie tu peux aller voir dans le Structure/Interface/Constant Viewer dans le menu outil de l'IDE

Dri

PS. celles-là sont définies

Publié : lun. 01/oct./2007 14:16
par Golfy
Super ! merci !!!!
un excellent outil ce visualiseur de structure :D

==> merci à Dobro pour le code
==> merci à Dr Dri pour le visualiseur de constantes