begin process at 2012 05 29 13:45:07
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

pointeur et handle


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

pointeur et handle

mardi 11 janvier 2005 à 17:31:24 | pointeur et handle

yerosnimus

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.
La description se trouve ici :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/regopenkey.asp

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 ?

Merci beaucoup de votre patience.

Jerome

mardi 11 janvier 2005 à 17:53:54 | Re : pointeur et handle

ymca2003

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.
mercredi 12 janvier 2005 à 09:43:31 | Re : pointeur et handle

yerosnimus

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.

Merci

Jerome

mercredi 12 janvier 2005 à 09:45:23 | Re : pointeur et handle

ymca2003

Réponse acceptée !
j'ai recopier bêtement, phkey doit être un HKEY* et pas un HANDLE*.
mercredi 12 janvier 2005 à 10:03:01 | Re : pointeur et handle

yerosnimus

Exact, je viens aussi de m'apercevoir de cette erreur.

Encore merci de votre aide

Jerome


Cette discussion est classée dans : fonction, variable, handle, pointeur, regopenkey


Répondre à ce message

Sujets en rapport avec ce message

pb pointeurs [ par Arnaud16022 ] bonsoirj'ai un peu de mal avec les pointeurs et ma fonction marche pas trop.Le but est de passer une variable en parametre a une fonction, qui va stoc Pointeur sur char [ par wislam2007 ] salut j'ai un variable de type char, et une fonction qui retourne un pointeur sur un caractère (char), comment faire pour affecter le retour de la fon Obtenir l'handle d'une DLL [ par TryToHelpMe ] Bonjour,J'ai un nouveau problème que je n'arrive pas à résoudre.J'ai besoin de récupérer l'handle de ma DLL.Je fait appel à ma DLL depuis un programme pointeur sur une fonction [ par AmineTheGreat ] Bonjour,J'ai déclarer un pointeur sur une fonction et je veux récuperer l'adresse de cette fonction comment faire?int (*task1)( );je veux mettre l'adr initialiser un lpcwstr dans une fonction [ par weahgeorges ] Bonjour,mon problème est le suivant: Je voudrais passer un variable de type lpcwstr à une fonction. Ensuite la variable sera initialisé dans cette fon pointeur à la fin "\0" [ par avg ] j'ai une fonction qui demande un pointeur sur unsigned char mais il faut qu'il contient à la fin "\0" comment je peut faire [code=cpp] unsigned char Pb - stockage de deux valeurs dans une variable [ par lectpe ] Bonjour. J'ai créé une structure représentant une fonction mathématique dans laquelle est défini une variable "Domain" qui correspond au type de la f Récupèrer Handle de fenetre [ par LaTatadu91 ] Bonjour, J'ai un problème avec cette fonction [code=cpp]HWND hWnd = FindWindow(0, "Server Config");[/code] qui est pourtant censée me renvoyer un Han type de donnée inconnu [ par jeffise57 ] dans une fonction developper par une autre personne j'ai un type char** trucmuche, cette variable est un buffer qui doit recevoir le résultat qu'est c Communication avec une dll activeX et déclaration d'une database [ par julienbad ] Bonjour à tous j'ai un petit problème pour communiquer avec une dll activeX (COM),En fait j'ai une erreur de pointeur sur une database je pense, erreu


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,045 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales