Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Autres langages > Autres langages > Basic > PureBasic

Réponse
 
Outils de la discussion
Vieux 21/07/2008, 19h29   #1 (permalink)
Futur Membre du Club
 
Date d'inscription: août 2006
Localisation: France, Nîmes
Âge: 19
Messages: 30
Envoyer un message via AIM à Apocalyps Envoyer un message via MSN à Apocalyps Envoyer un message via Skype™ à Apocalyps
Par défaut API Windows => Base de Registre

Après de longues recherches sur mon ami ( ), je vous demande de l'aide car celui ci ne me répond qu'en VB .

Savez vous quelle DLL et quelles fonctions faut-il utiliser pour accéder (Lecture/Ecriture) sur la Base de Registre.

Merci de votre Aide

Dernière modification par Guardian ; 21/07/2008 à 19h46 Motif: Déplacement + Titre
Apocalyps est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/07/2008, 19h42   #2 (permalink)
Membre chevronné
 
Avatar de supersnail
 
Date d'inscription: novembre 2006
Localisation: /home/computer
Messages: 660
Par défaut

Pour importer les APIs,déjà lis ça : http://comtois.developpez.com/tutori.../presentation/

Ensuite tu n'auras qu'à impoerter les APIs pour lire dans le registre (qu'on peut trouver sur )
__________________
Toute question technique envoyée en MP ira directement à la poubelle
Le développement du plugin boule-de cristal 1.0 pour firefox est annulé.Expliquez donc clairement votre problème (en donnant code source et messages d'erreur)

Pour ceux qui auraient des problèmes avec la langue française,aller voir ici (et coller la traduction sur le forum)
Quel gestionaire de fenêtres préférez-vous sous Linux? - NetBeans addict
supersnail est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/07/2008, 19h52   #3 (permalink)
Rédacteur/Modérateur
 
Avatar de ram-0000
 
Date d'inscription: mai 2007
Localisation: France
Messages: 2 414
Par défaut

Point d'entrée de l'API Win32 pour accèder à la base de registres
__________________
Raymond
Mes tutoriels, mon projet
Consultez la cartographie des forums de DVP
ram-0000 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 22/07/2008, 10h04   #4 (permalink)
Responsable Purebasic
 
Date d'inscription: avril 2003
Messages: 335
Par défaut

et un exemple de code avec PureBasic, je ne sais pas ce que ça vaut, je n'ai pas testé et je ne connais la BDR. Mais tu pourras t'en inspirer

Code :
; 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
__________________
Rubrique PureBasic
comtois est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 22/07/2008, 10h06   #5 (permalink)
Responsable Purebasic
 
Date d'inscription: avril 2003
Messages: 335
Par défaut

un autre exemple pour la lecture.
Les fonctions de l'API sont déjà déclarées dans PureBasic, tu peux les utiliser directement. Pour les distinguer des fonctions du langage, elles se terminent par un underscore.

Code :
Procedure.s Reg_GetValue(topKey, sKeyName.s, sValueName.s, ComputerName.s)
  lpData.s
  GetValue.s =""
 
  If Left(sKeyName, 1) = "\"
    sKeyName = Right(sKeyName, Len(sKeyName) - 1)
  EndIf
 
  If ComputerName = ""
    GetHandle = RegOpenKeyEx_(topKey, sKeyName, 0, #KEY_ALL_ACCESS, @hKey)
  Else
    lReturnCode = RegConnectRegistry_(ComputerName, topKey, @lhRemoteRegistry)
    GetHandle = RegOpenKeyEx_(lhRemoteRegistry, sKeyName, 0, #KEY_ALL_ACCESS, @hKey)
  EndIf
 
  If GetHandle = #ERROR_SUCCESS
    lpcbData = 60000
    lpData = Space(60000)
   
    GetHandle = RegQueryValueEx_(hKey, sValueName, 0, @lType, @lpData, @lpcbData)
   
    If GetHandle = #ERROR_SUCCESS
      Select lType
        Case #REG_SZ
          GetHandle = RegQueryValueEx_(hKey, sValueName, 0, @lType, @lpData, @lpcbData)
         
          If GetHandle = 0
            GetValue = Left(lpData, lpcbData - 1)
          Else
            GetValue = ""
          EndIf
         
         
        Case #REG_MULTI_SZ
          GetHandle = RegQueryValueEx_(hKey, sValueName, 0, @lType, @lpData, @lpcbData)
         
          If GetHandle = 0
            ptr=@lpData
           
           
            ;/ Renvoie chaine terminée par deux Chr nul
            For n=ptr To ptr+lpcbData-2
              If PeekB(n)=0
                GetValue+Chr(13)
              Else
                GetValue+Chr(PeekB(n))
              EndIf
            Next
           
          Else
            GetValue = ""
          EndIf
         
        Case #REG_DWORD
          GetHandle = RegQueryValueEx_(hKey, sValueName, 0, @lpType, @lpDataDWORD, @lpcbData)
         
          If GetHandle = 0
            GetValue = Str(lpDataDWORD)
          Else
            GetValue = "0"
          EndIf
         
      EndSelect
    EndIf
  EndIf
  RegCloseKey_(hKey)
  ProcedureReturn GetValue
EndProcedure
 
Debug Reg_GetValue(#HKEY_LOCAL_MACHINE,"SYSTEM\CurrentControlSet\Control\ServiceGroupOrder","List",".")
 
__________________
Rubrique PureBasic
comtois est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 22/07/2008, 11h19   #6 (permalink)
Futur Membre du Club
 
Date d'inscription: août 2006
Localisation: France, Nîmes
Âge: 19
Messages: 30
Envoyer un message via AIM à Apocalyps Envoyer un message via MSN à Apocalyps Envoyer un message via Skype™ à Apocalyps
Par défaut Merci

Merci de vos réponses, j'ai essayé la méthode de comtois et elle marche à merveille.

Merci pour vos conseils ...

Cette discussion est Résolue
Apocalyps est déconnecté   Envoyer un message privé Réponse avec citation
NEWS PUREBASICFAQ PureBasicTutoriels PureBasicSources PureBasic

Réponse

Précédent   Forum des développeurs > Autres langages > Autres langages > Basic > PureBasic



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide