![]() |
| 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é. | |||||||
|
|||||||
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Futur Membre du Club
![]() |
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 |
|
|
|
|
|
#2 (permalink) |
|
Membre chevronné
![]() Date d'inscription: novembre 2006
Localisation: /home/computer
Messages: 660
|
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 |
|
|
|
|
|
#4 (permalink) |
![]() Date d'inscription: avril 2003
Messages: 335
|
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 |
|
|
|
|
|
#5 (permalink) |
![]() Date d'inscription: avril 2003
Messages: 335
|
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 |
|
|
|
|
![]() |
![]() |
||
API Windows => Base de Registre
|
||
| Outils de la discussion | |
|
|