yerosnimus
Messages postés18Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention15 janvier 2007
-
11 janv. 2005 à 17:31
yerosnimus
Messages postés18Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention15 janvier 2007
-
12 janv. 2005 à 10:03
Bonjour,
bon, je suis débutant et surtout autodidacte en programmation. J'essaie
de comprendre actuellement l'utilisation d'un pointeur avec une
fonction précise trouvée sur MSDN. Il s'agit de la fonction RegOpenKey.
Le troisième paramètre de cette fonction est un pointeur vers une
variable qui reçoit un handle de la clé ouverte (traduction
approximative, donc ci-après en voici ll'extrait original) :
* phkResult :
[out]
Pointer to a variable that receives a handle to the opened key
Si dans un programme, je veux utiliser cette fonction, il me semble que
je dois déclarer le pointeur de type HANDLE, donc faire quelque
chose comme ça :
HANDLE *phKey;
Ce pointeur devrait être initialisé avec la variable contenant le
handle de la clé, donc j'ai dû aussi déclarer cette variable avec :
HANDLE hkey;
puis initialiser mon pointeur :
phKey = &hkey;
pour finir, je devrais pouvoir utiliser ma fonction :
RegOpenKey(1er paramètre, 2ème paramètre, phKey);
Bien entendu, cela ne fonctionne pas, sinon j'aurais tout compris.
Quelque un pourrait-il m'expliquer où je me trompe dans mon
raisonnement ?
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 11 janv. 2005 à 17:53
RegOpenKey sert à ouvrir une clé et le résultat sera un HANDLE de type HKEY. Mais le résultat n'est pas simplement retourné par la fonction car elle retourne un code d'erreur. Il fuat donc lui passer un pointeur vers ce HKEY pour qu'elle puisse lui donner sa valeur :
HKEY hKey;
RegOpenKey(HKEY_CLASS_ROOT, "tytyyt", &hKey);
Cependant ce que tu fais est bon aussi :
HANDLE* phKey;
HKEY hKey;
phKey = &hKey;
RegOpenKey(HKEY_CLASS_ROOT, "tytyyt", phKey);
=> hKey recevra le handle de la clé.
Si ca ne marche pas, il faut vérifier le code de retour de RegOpenkey (qui renvoi ERROR_SUCCESS soit 0 en cas de succes)
PS : il vaut mieux utiliser les fonctions RgOpenKeyEx et RegCreateKeyEx.
yerosnimus
Messages postés18Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention15 janvier 2007 12 janv. 2005 à 09:43
bonjour,
tout d'abord merci pour votre réponse.
Ensuite quelques précisions et remarques :
1/ l'erreur intervient à la compilation : ci-dessous le message d'erreur (avec DEV-C++ 4.9.9.0) :
invalid conversion from `HKEY__**' to `void**'
La ligne pointée par DEV-C++ est celle-ci :
phKey = &hkey;
2/ Quelle différence y a t-il entre mon écriture et la votre concernant cette ligne (à supposer qu'il y en ait une) ?
HANDLE *phKey;
HANDLE* phKey;
3/ Pour info :
si dans ma fonction RegOpenKey, je passe comme 3ème argument l'adresse
de la variable handle (&hkey) comme vous me l'indiquez dans votre
post au lieu de passer le pointeur (phkey) la compilation (et mon code)
fonctionne parfaitement.