Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless
Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless
MSI FORGE GK600 TKL WIRELESS: switch lineari hot-swap, tripla connettività, display LCD e 5 strati di fonoassorbimento. Ottima in gaming, a 79,99 euro
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI porta un importante aggiornamento alla sua linea di gimbal camera tascabili con Osmo Pocket 4: sensore CMOS da 1 pollice rinnovato, gamma dinamica a 14 stop, profilo colore D-Log a 10 bit, slow motion a 4K/240fps e 107 GB di archiviazione integrata. Un prodotto pensato per i creator avanzati, ma che convince anche per l'uso quotidiano
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Il primo headset open-back della linea INZONE arriva a 200 euro con driver derivati dalle cuffie da studio MDR-MV1 e un peso record di soli 199 grammi
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-04-2011, 20:05   #1
skeleton
Member
 
L'Avatar di skeleton
 
Iscritto dal: Jul 2009
Messaggi: 81
[C++] Problemi Con Funzione RegEnumKey()

Buona sera a tutti e soprattutto buona Pasqua!!

Avrei un problema con questo "semplice" programma:
Codice:
#include <windows.h>
#include <conio.h>
#include <iostream>
using namespace std;

main(){
       long result; //Variabile per verificare la corretta esecuzione di una funzione
       HKEY hKey;
       TCHAR percKey[] = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"; //Percorso chiave di registro
       TCHAR nameKey[256];
       int numKey = 0;
       
       result = RegOpenKey(HKEY_LOCAL_MACHINE, percKey, &hKey);
       if (result != ERROR_SUCCESS){
                  cout<<"Errore Apertura Percorso Del Registro!!";
                  getch();
                  return 1;
                  }
       cout<<"Apertura Percorso Del Registro Avvenuta Con Successo!!\n\n\n";
       
       {
             result = RegEnumKey(hKey, numKey, nameKey, 256);
             cout<<"\nNome Chiave: "<<nameKey;
             numKey ++;
       } while (result != ERROR_NO_MORE_ITEMS);
             
       RegCloseKey(hKey);
       getch();
}
Il problema riguarda l'output, nel senso che il programma mi restituisce per il nome della chiave solo il valore "Nome", una sola volta, e poi continua a ciclare all'infinito (finchè non lo chiudo manualmente).

Chiedo cortesemente una soluzione.
skeleton è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2011, 20:17   #2
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
Quote:
Originariamente inviato da skeleton Guarda i messaggi
Buona sera a tutti e soprattutto buona Pasqua!!

Avrei un problema con questo "semplice" programma:
Codice:
#include <windows.h>
#include <conio.h>
#include <iostream>
using namespace std;

main(){
       long result; //Variabile per verificare la corretta esecuzione di una funzione
       HKEY hKey;
       TCHAR percKey[] = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"; //Percorso chiave di registro
       TCHAR nameKey[256];
       int numKey = 0;
       
       result = RegOpenKey(HKEY_LOCAL_MACHINE, percKey, &hKey);
       if (result != ERROR_SUCCESS){
                  cout<<"Errore Apertura Percorso Del Registro!!";
                  getch();
                  return 1;
                  }
       cout<<"Apertura Percorso Del Registro Avvenuta Con Successo!!\n\n\n";
       
       {
             result = RegEnumKey(hKey, numKey, nameKey, 256);
             cout<<"\nNome Chiave: "<<nameKey;
             numKey ++;
       } while (result != ERROR_NO_MORE_ITEMS);
             
       RegCloseKey(hKey);
       getch();
}
Il problema riguarda l'output, nel senso che il programma mi restituisce per il nome della chiave solo il valore "Nome", una sola volta, e poi continua a ciclare all'infinito (finchè non lo chiudo manualmente).

Chiedo cortesemente una soluzione.
Codice:
       {
             result = RegEnumKey(hKey, numKey, nameKey, 256);
             cout<<"\nNome Chiave: "<<nameKey;
             numKey ++;
       } while (result != ERROR_NO_MORE_ITEMS);

se il codice è proprio questo.. allora hai dimenticato di scrivere do prima della graffa, quindi hai un blocco che viene eseguito una volta e un while senza body con la condizione che rimane vera e looppa
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 25-04-2011, 09:50   #3
skeleton
Member
 
L'Avatar di skeleton
 
Iscritto dal: Jul 2009
Messaggi: 81
Grazie mille per il suggerimento, non c'avevo riflettuto!!
Ho pensato di usare un ciclo for anzichè un do while per ridurre le righe di codice, e sembra che funzioni:

Codice:
#include <windows.h>
#include <conio.h>
#include <iostream>
using namespace std;

main(){
       long result; //Variabile per verificare la corretta esecuzione di una funzione
       HKEY hKey;
       TCHAR percKey[] = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"; //Percorso chiave di registro
       TCHAR nameKey[256];
       
       result = RegOpenKey(HKEY_LOCAL_MACHINE, percKey, &hKey);
       if (result != ERROR_SUCCESS){
                  cout<<"Errore Apertura Percorso Del Registro!!";
                  getch();
                  return 1;
                  }
       cout<<"Apertura Percorso Del Registro Avvenuta Con Successo!!\n\n\n";
       
       for (int numKey = 0; result != ERROR_NO_MORE_ITEMS; numKey ++){
           result = RegEnumKey(hKey, numKey, nameKey, 256);
           cout<<"\nNome Chiave: "<<nameKey;
           }
             
       RegCloseKey(hKey);
       getch();
}
Ancora Grazie Mille!!

Ultima modifica di skeleton : 25-04-2011 alle 09:55.
skeleton è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless Tastiera gaming MSI GK600 TKL: switch hot-swap, ...
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici DJI Osmo Pocket 4: la gimbal camera tascabile cr...
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori Sony INZONE H6 Air: il primo headset open-back d...
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA Nutanix cambia pelle: dall’iperconvergenza alla ...
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta Recensione Xiaomi Pad 8 Pro: potenza bruta e Hyp...
Lava a 75°, è un 21.000Pa con...
iPhone 18 Pro: il componente che garanti...
DeepL alza il livello: con Voice-to-Voic...
Apple sta utilizzando sempre più ...
Il MacBook Neo vende tanto? Microsoft le...
AST SpaceMobile BlueBird 7: Blue Origin ...
È il momento migliore per comprar...
Svendita MacBook Pro: c'è il mode...
Oggi questa TV TCL QLED da 43 pollici co...
Il caricatore multiplo da 200W che va be...
Top 7 Amazon, il meglio del meglio di qu...
Spento lo strumento LECP della sonda spa...
Voyager Technologies ha siglato un accor...
GoPro annuncia la linea MISSION 1 con tr...
Alcune varianti dei futuri Samsung Galax...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:41.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v