Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet
Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet
Il nuovo Deebot X12 OmniCyclone abbina un sistema di raccolta dello sporco senza sacchetto, un rullo di lavaggio esteso e la tecnologia FocusJet per intervenire più efficacemente sulle macchie più persistenti. Un robot completo e preciso che aiuta a tenere puliti i pavimenti di casa con il minimo sforzo
Narwal Flow 2: la pulizia di casa con un mocio a nastro
Narwal Flow 2: la pulizia di casa con un mocio a nastro
Narwal Flow 2 implementa un mocio a nastro che esegue una pulizia dettagliata del pavimento di casa, in abbinamento ad un potente motore di aspirazione della polvere: un prodotto ideale per gestire in autonomia e con grande efficacia le necessità di pulizia dei pavimenti di casa
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
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


Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet Ecovacs Deebot X12 OmniCyclone: lava grazie a Fo...
Narwal Flow 2: la pulizia di casa con un mocio a nastro Narwal Flow 2: la pulizia di casa con un mocio a...
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...
Funzioni nascoste nelle librerie ADLX Ra...
Itala rinasce: lo storico marchio automo...
Huawei Watch Fit 5 e 5 Pro ufficiali: di...
ECOVACS DEEBOT T90 PRO OMNI vs Roborock ...
Fastweb scompare dai partner Starlink Mo...
Huawei anticipa tutti con Pura X Max: il...
Amazon Tech Week 2026: RTX 5000, process...
Grandi offerte Amazon su scope elettrich...
Amazon e Anthropic rafforzano la partner...
Elden Ring: il film arriverà fra ...
Mercato PC, +3,2% nel Q1 2026: Lenovo se...
Corsair Platform: scrivanie gaming modul...
Assassin's Creed Black Flag Resynced: Ub...
La crisi delle memorie colpisce anche Ap...
NVIDIA accelera il Path Tracing: nuovo a...
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: 11:17.


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