|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Base de registre Windows CE en EVC++ : HELP [ Archives / Divers ] (patdan)
Informations & options pour cette discussion
|
lundi 21 mars 2005 à 11:13:21 |
Base de registre Windows CE en EVC++ : HELP

patdan
|
Bonjour à tous, Je reviens à la charge car j'ai tout essayé, sauf la bonne méthode. Ca fait un sacré bout de temps que je me prends la tête pour récupérer dans mon message la valeur que j' attends cad : VBCE.ProjectRun. Je sais qu'elle y est sur mon pocket, c' est pour ça que je teste pour voir si ça marche avt de me lancer sur un pocket inconnu !! Mon but est de contrôler si tout est OK pour lancer un prog EVB. Si les valeurs nécessaires n'existent pas, je veux les créer. Je n'ai fait que le début du code et c'est déjà la galère!! Alors, bonjour la suite!! Je sais, il y a # exemples sur les sites, mais pas 1 ne m'a tirée d'affaire. Je rappelle que je ne connais pas du tout EVC++. Voici mon petit bout de code qui ne me ramène rien :
#include "stdafx.h" #include <commctrl.h> #include <windows.h> #include <windowsx.h> #include <commdlg.h> #include <tchar.h> // Unicode Conversion includes #include <winreg.h> // registry stuff //#include <stdio.h> // pour printf
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow) { HKEY hkey; LPCWSTR param=NULL; LPCSTR ch1; long retval; DWORD lType; DWORD cch; retval = RegOpenKeyEx(HKEY_CLASSES_ROOT,TEXT(".vb"),0,KEY_ALL_ACCESS,&hkey); retval = RegQueryValueEx(hkey,TEXT("Default"),NULL,&lType,NULL,&cch); ch1 = LPCSTR(malloc((cch+1)*sizeof(char))); retval = RegQueryValueEx(hkey,TEXT("Default"),NULL,NULL,LPBYTEch1),NULL); const unsigned short ch2 = (const unsigned short) *ch1; if (retval!=0) MessageBox (NULL,&ch2,TEXT("Info"),MB_OK); else MessageBox (NULL,TEXT("Problème"),TEXT("Info"),MB_OK); RegCloseKey(hkey); return 0; } **************** Je dois dire que ce qui est chaîne et conversion de chaînes etc...Je suis noyée ds ce langage Je vous en supplie, si qq'un peut m'aider, ce serait super!! MERCI D'AVANCE POUR VOTRE AIDE !! Je craque!
Patdan 
|
|
|
|
dimanche 27 mars 2005 à 09:59:49 |
Re : Base de registre Windows CE en EVC++ : HELP

AlexMAN
|
As tu regardé sur msdn.microsoft.com ? RegOpenKeyEx = ton 3eme et 4 eme parametres doivent etre a 0. Tu peux tester la valeur de retour (si != ERROR_SUCCESS alors probleme.).
Dans malloc, n'oublie pas que CE travaille QU'AVEC de l'unicode, donc c'est sizeof(TCHAR) (ou 2...)
"const unsigned short ch2 = (const unsigned short) *ch1; " < Ca je vois pas a quoi ca sert. Dans ta MessageBox, tu n'as qu'a mettre MessageBox(0, ch1, ....); ca marchera, c'est sur.
Bon ca a l'air d'etre a peu pres, bonne chance ;)
+2(p - n)
|
|
|
|
dimanche 3 avril 2005 à 10:03:03 |
Re : Base de registre Windows CE en EVC++ : HELP

patdan
|
Bonjour,
Super sympa d'essayer de m'aider. Mais depuis le début, je me heurte au problème suivant : lorsque j'écris : retval = RegQueryValueEx(hkey,TEXT("Default"),NULL,NULL,LPBYTE(ch1),NULL); if (retval!=0) MessageBox (NULL,ch1,TEXT("Info"),MB_OK); else MessageBox (NULL,TEXT("Problème"),TEXT("Info"),MB_OK); RegCloseKey(hkey); J'ai le message suivant : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char *' to 'const unsigned short *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast Error executing clarm.exe. 
Merci de ton aide AlexMAN, si tu peux continuer à m'aider, je te remercie... (ou qqun d'autre) Merci d'avance à tous Bonne prog patdan

|
|
|
|
dimanche 3 avril 2005 à 10:35:02 |
Re : Base de registre Windows CE en EVC++ : HELP

AlexMAN
|
Alors je t'explique un truc qui m'a "choqué" (pour la fonction RegSetValueEx, donc je pense que c'est pareil) :
Alors, comme tu as pu le voir, le param a passer, c'est un char* (caracteres codés sur un octet), mais comme tu dois le savoir, WinCE ne prend que des caracteres Unicode (enfin les API, si je me trompe pas), donc en fait, il faut que tu passes une chaine unicode (TCHAR*) et que tu castes en (unsigned const char *) pour que ca passe a la compilation :
TCHAR szChaine[128];
RegQueryValue(....., (unsigned const char*)szChaine...);
Et apres tu pourras faire un MessageBox() (MessageBox(), comme je l'ai dit plus haut, n'accepte que des TCHAR*, d'ou ton erreur a la compilation).
Voila, ca devrait marcher, mais dans le cas contraire, n'hesite pas a redemander ;)
Et en
+2(p - n)
|
|
|
|
dimanche 3 avril 2005 à 10:35:27 |
Re : Base de registre Windows CE en EVC++ : HELP

AlexMAN
|
Ne tiens pas compte du 'Et en' (erreur de ma part).
+2(p - n)
|
|
|
|
dimanche 3 avril 2005 à 12:33:36 |
Re : Base de registre Windows CE en EVC++ : HELP

patdan
|
Merci AlexMAN de continuer à me répondre.Voici mon mini prog. Je n'ai plus d'erreur de compil, mais je me retrouve comme avt avec une valeur vide. HKEY hkey; LPCWSTR param=NULL; //LPCSTR ch1; TCHAR ch1[128]; long retval; DWORD lType; DWORD cch; retval = RegOpenKeyEx(HKEY_CLASSES_ROOT,TEXT(".vb"),0,0,&hkey); retval = RegQueryValueEx(hkey,TEXT("Default"),NULL,&lType,NULL,&cch); //ch1 = LPCSTR(malloc((cch+1)*sizeof(TCHAR))); retval = RegQueryValueEx(hkey,TEXT("Default"),NULL,NULL,(unsigned char*)ch1,NULL); //const unsigned short ch2 = (const unsigned short) *ch1; if (retval!=0) MessageBox (NULL,ch1,TEXT("Info"),MB_OK); else MessageBox (NULL,TEXT("Problème"),TEXT("Info"),MB_OK); RegCloseKey(hkey); return 0;
Je rappelle que sur mon pocket , cette valeur existe : VBCE.ProjectRun Je tourne en rond. Merci encore !! et désolée du dérangement patdan
|
|
|
|
dimanche 3 avril 2005 à 13:09:49 |
Re : Base de registre Windows CE en EVC++ : HELP

AlexMAN
|
retval = RegQueryValueEx(hkey,TEXT("Default"),NULL,NULL,(unsigned char*)ch1,NULL);Il te manque pas mal de parametres : RegQueryValueEx(..., REG_SZ, (unsigned char *)ch1, &Count); Je presume que tu veux recuperer une clé de type 'string', sinon regarde au lien que je te donne plus bas. Count doit contenir la taille en octet de ch1. [ Lien ]Pense a regarder sur msdn, c'est la BASE de connaissance indispensable. Et surtout, tu ne me deranges pas ;) +2(p - n)
|
|
|
|
dimanche 3 avril 2005 à 17:41:34 |
Re : Base de registre Windows CE en EVC++ : HELP

patdan
|
C'est encore moi!! MSDN OK j'y vais souvent ms ne connaissant pas le C++, il n'y a pas d'exemple et je plane. Mon code avec REG_SZ comme tu m'as conseillé : HKEY hkey; LPCWSTR param=NULL;TCHAR ch1[64]; long retval; DWORD lType; DWORD cch; DWORD Count; retval = RegOpenKeyEx(HKEY_CLASSES_ROOT,TEXT(".vb"),0,0,&hkey); retval = RegQueryValueEx(hkey,TEXT("Default"),NULL,&lType,NULL,&cch); retval = RegQueryValueEx(hkey,TEXT("Default"),NULL,REG_SZ,(unsigned char*)ch1,&Count); if (retval!=0) MessageBox (NULL,ch1,TEXT("Info"),MB_OK); else MessageBox (NULL,TEXT("Problème"),TEXT("Info"),MB_OK); RegCloseKey(hkey); return 0; error C2664: 'RegQueryValueExW' : cannot convert parameter 4 from 'const int' to 'unsigned long *'
Si je mets NULL à la place de REG_SZ, pas d'erreur compil, mais le msg donne "Problème" à l'exec D'autre part, je suis assez nulle pour ne pas savoir exploiter la taille Count. J'avais il y a qque tps essayé des ".left"...mais j'avais tjrs un pb du style left de .Left doit être de type Struct/union/ etc... J' ai honte de le dire , mais je cherche partout depuis plus d'1 mois Eh oui!! C'est pour ça que je deviens casse-pompe. Je désespère.C'est triste à dire mais il faut quasiment me mâcher le boulot, vu que j'ai tout essayé sans résultat Merci de ta patience AlexMAN. J'espère que tu en as en réserve... patdan
|
|
|
|
dimanche 3 avril 2005 à 20:04:04 |
Re : Base de registre Windows CE en EVC++ : HELP

AlexMAN
|
retval = RegQueryValueEx(hkey,TEXT("Default"),NULL,REG_SZ,(unsigned char*)ch1,&Count);
C'est une erreur de ma part, je suis allé vite, et j'ai mal lu MSDN, dsl. Donc voila comment faire :
retval = RegQueryValueEx(hkey,TEXT("Default"),NULL,&Type,(unsigned char*)ch1,&Count);
DWORD Count = TAILLE DE TON BUFFER; (tu fais un appel pour connaitre la taille du buffer a allouer, donc tu n'as qu'a donner ta variable contenant cette taille). DWORD Type;
Type contiendra le type de données que tu viens de recuperer (REG_SZ...Etc).
Voila, si t'as encore des soucis, n'hesite pas, c'est avec plaisir :)
+2(p - n)
|
|
|
|
dimanche 3 avril 2005 à 22:36:04 |
Re : Base de registre Windows CE en EVC++ : HELP

patdan
|
Encore moi!! : J'ai essayé ton code et ayant tjrs des pbs (erreurs compil, pb exec etc...) J'ai encore bidouillé , mais mal comme dab : voilà mon code à la noix qui me rapporte tjrs le msg : "Problème" au lieu du message avec ma valeur attendue. C'est bien une string que je dois recevoir : "VBCE.ProjectRun" HKEY hkey; LPCWSTR param=NULL;TCHAR ch1; long retval; DWORD lType; DWORD Count; retval = RegOpenKeyEx(HKEY_CLASSES_ROOT,TEXT(".vb"),0,0,&hkey); retval = RegQueryValueEx(hkey,TEXT("Default"),NULL,&lType,NULL,&Count); DWORD Lg = Count; ch1 = TCHAR(malloc(Lg*sizeof(char))); retval = RegQueryValueEx(hkey,TEXT("Default"),NULL,NULL,(unsigned char*)ch1,&Lg); if (retval!=0) MessageBox (NULL,(const unsigned short*)ch1,TEXT("Info"),MB_OK); else MessageBox (NULL,TEXT("Problème"),TEXT("Info"),MB_OK); RegCloseKey(hkey); Si tu avais l'occasion de tester ce que je veux faire avec une string à toi au cas où tu n'aies pas de prog EVB sur ton pocket, ce serait certainement le mieux.Quand tu auras du temps bien sûr... Merci encore pour tout ce que tu fais. Je n'ai jamais eu beaucoup de réponses sur ce site,( je dois poser des questions idiotes ou curieuses), par contre j'ai vu que pour critiquer ou s'insulter les réponses sont plus nombreuses hélas. Heureusement il reste des gens sérieux et serviables et on trouve tout de même souvent des choses intéressantes Bonne soirée et bon courage patdan
|
|
|
Cette discussion est classé dans : text, evc, include, retval, hkey
Répondre à ce message
Sujets en rapport avec ce message
evc 4.0 base de données [ par jmbberck ]
J'ai fait un soft en evc 3.0 montrant des images (une base de données .cdb et ADOCE 3.0) permettant à des personnes handicapées de communiquer à l'aid
FindFirstProjectFile [ par PSylvie ]
Bonjour, Je programme une application pour Smartphone 2003 avec eVC++ 4.0.. J'aimerais lister tous les fichiers textes se trouvant sur la carte du dev
Transport d'un dll de eVC++ 3.0 en eVC++ 4.0 [ par PSylvie ]
Bonjour,Je possède une dll sous eVC++ 3.0 qui fonctionne parfaitement. Cependant, j'ai écrit une application sous eVC++ 4.0. qui a besoin de cette dll
Actualisation d'un projet en EVC++ 3.0 a 4.0 [ par ramonzete ]
Bonjour,J'ai un projet qui a été programmé en 3.0 et je voudrais le passer en 4.0 . Vous savez comment faire?Merci :)
EVC++ 3 et Windows XP [ par slapin ]
Bonjour,Je me lance dans le developpement pour un symbol PPT2800 sous pocket PC 2002Si j'ai bien compris il faut Embedded Visual Tools 3 avec le SDK P
Menus avec eVC [ par DOMLEC ]
Bonjour,J'ai installé eVC4 pour développer une appli pour Windows PocketPC2003. Le Design de l'appli est prêt, mais comment ajouter des options dans l
Probleme lancement d'applications eVC++ [ par AlexMAN ]
Bonsoir, Voila, j'ai un petit souci avec eVC++. En effet, lorsque je lance mon application a partir de l'emulateur, tout fonctionne, mais lorsque je t
EVC++ PROBLEME au DOWNLOAD de mon EXE [ par patdan ]
Bonjour à tous, Je démarre en EVC++ . Je plane à 100 000! J'ai déjà fait un prog pour lancer un EVB, sans pb. Par contre, je fais un prog qui lit la b
evc++ jouez des sons... [ par Zart ]
J'ai un contexte bien restreint dans lequel je dois jouer des sons. Je développe sous eVC++ et je besoin dans un contexte static de jouer du son...
evc++ 4 - démarrer un sous-programme ou un sous-shell [ par ggdh ]
Bonjour, petit problème pour moi insoluble....(pour l'instant), je cherche à spawnerune application dans mon source evc++ tel qu'on peut le faire en C
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|