Registryeintrag mit einfachem C++ Programm ändern.
-
Hallo

Habe schon einige Seiten im Web durchsucht und bin dann in diesem Forum hängen geblieben. Unter Win-Api habe ich diesen Beitrag gefunden, wo sehr ausführlich beschrieben ist, wie das funktioniert.
Nur ganz verstehen tue ich es nicht. Ich habe auch mal versucht, den Code zum einfachen Erstellen eines Eintrages auszuführen - mit wenig Erfolg
Jetzt zu dem Warum.
Ein Freund von mir und ich selbst haben uns vor gut 4 Monaten einen neuen PC geleistet, mit einem AMD64 Prozessor.
Jetzt haben wir seit gut einer Woche auch mal "Cool & Quite" eingeschaltet.
Das bewirkt, das sich die CPU bei wenig Auslastung auf 800MHz runtertaktet.
Gut, das Problem:
Bei Games (UT, TO), die auf dieser Engine basieren (bei anderen konnten wir das jetzt nicht feststellen) läuft das Spiel zu schnell. Beim starten erhät die Engine den Wert 800MHz, während des Ladens taktet die CPU aber wieder auf 2000MHz hoch - das Spiel läuft zu schnell.Um dies zu verhindern, muss man in den Energieoptionen von XP die Einstellung "minimaler Energieverbrauch" einstellen. Wechselt man diese ist auch "Cool & Quite" ausgeschaltet.
Daher meine Idee - da diese Einstellung eben auch in der Reg von XP gespeichert wird - ein kleines Programm zu schreiben, mit dem man vor dem Spiel mit 2 Klicks C&Q ein/ausschalten kann.
Eben diesen Reg-Eintrag zu ändern.
Ist das so einfach möglich? Den Reg-Schlüssel, in dem dieser Wert gespeichert wird, habe ich bereits gefunden.\HKEY_USERS\.DEFAULT\Control Panel\PowerCfgDort ist er hinterlegt.
Und den Wert in CurrentPowerPolicy möchte ich entweder mit "4" oder "0" belegen.Ein bischen viel Text, aber ich hoffe, ich konnte mein Problem ein wenig deutlich schildern

Hoffe, ihr könnt mir helfen.
MfG Stephan
-
Hallo,
das ist ohne zur Hilfenahme der WinAPI oder MFC nicht moeglich (oder VCL).
Mit welcher Library arbeitest du?mfg
v R
-
Hallo.
Mit WinApi kenne ich mich leider nicht aus - oder habe es noch nicht bewusst benutzt.
Ich arbeite seit 2 Jahren in der Schule mit Visual C++, erst haben wir Programme im DOS Fenster geschrieben, mit OOP oder call-by value.
Jetzt haben wir angefangen, mit Visual C++ auch Oberflächen zu erstellen.
Ich weiß, klinkt ein bischen nach Neuling, bin ich auch, möchte ich nicht abstreiten.
Ist WinApi denn etwas ganz anderes oder nur eine Art der Programmierung?
Kleine Programme zu Hause compiliere ich im Moment mit Dev-C++.
Den Borland Builder oder aber MS Visual C++ habe ich nicht installiert.Gruß
-
Die WinApi ist eigentlich nur eine Library zur Windowsprogrammierung.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Inwiefern hat es denn mit dem FAQ-Beitrag nicht funktioniert?! Welche Fehler hast du bekommen?
-
Es kam eine Fehlermeldung.
Ich habe beim Testen einfach mal versucht, einen Eintrag in der Reg zu erstellen.
Hier mal der Code (ja, ich weiß, nicht perfekt
)// Cool & Quite AN/AUS #include <iostream.h> #include <conio.h> #include <iomanip.h> #include <windows.h> //------------------------------------------------------------------------------ int main() { int user=0; char end; end='j'; do { cout<<"-------------------MENUE--------------------"<<endl; cout<<"Cool n Quite ausschalten: 1 eingeben"<<endl; cout<<"Cool n Quite einschalten: 2 eingeben"<<endl; cout<<"Testlauf: 3 eingeben"<<endl; cout<<"--------------------------------------------"<<endl; cout<<"--------------------------------------------"<<endl; cout<<"Auswahl: "; cin>>user; cout<<endl<<"--------------------------------------------"<<endl<<endl; switch (user) { case 1: { cout<<"AUS"<<endl; cout<<"--------------------------------------------"<<endl; cout<<"Diese Programm wiederholen? <j/n>: "; cin>>end; break; } case 2: { cout<<"AN"<<endl; cout<<"--------------------------------------------"<<endl; cout<<"Diese Programm wiederholen? <j/n>: "; cin>>end; break; } case 3: { cout<<"Zum Test wird ein Schluessel erstellt"<<endl; HKEY hKey=NULL; RegCreateKeyEx(HKEY_CURRENT_USER,"Test",0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hkey,0); RegCloseKey(hKey); cout<<"--------------------------------------------"<<endl; cout<<"Diese Programm wiederholen? <j/n>: "; cin>>end; break; } } } while(end!='n'); return 0; }In dieser Zeile
RegCreateKeyEx(HKEY_CURRENT_USER,"Test",0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hkey,0);meldet er den Fehler "'hkey' undeclared".
Gut, nicht deklariert, aber wie deklarier ich die denn richtig?Mit dem genauen Problem, wie ich jetzt einen bestimmten Eintrag ändere habe ich mich noch nicht befasst.
Gruß
-
Du hast bei der Deklaration das k von Key groß geschrieben und bei der Verwendung klein
-
Sitz in der Schule, will mich grad nicht einloggen..
Dann solltet ihr das mit der Deklaration in der FAQ dazu ändern.
Ich hatte das nur rauskopiert, dann ist dort der gleiche Fehler
Ich ändere es zu Hause mal um und probiere es ausDanke!
-
Super, funktioniert

Jetzt gleich meine nächste Frage. Ich möchte unter diesem Pfad
HKEY_USERS\.DEFAULT\Control Panel\PowerCfgden Schlüssel
CurrentPowerPolicybearbeiten. Also dort geschriebene Werte ändern.
Nur die ganzen Parameter in den Befehlen bereiten mir Kopfsausen
Wie sieht das denn aus, wenn ich dort den Wert mit dem Programm entweder auf "0" oder auf "4" setzen möchte.
Könnte mir jemand dafür ein Beispiel geben?Danke.
Gruß, Stephan
-
Habe das im FAQ-Beitrag jetzt auch korrigiert

DWORD dwNumber=150; RegSetValueEx(hKey,"EintragsName",0,REG_DWORD,(BYTE*)&dwNumber,sizeof(DWORD));
-
So, das mit dem Schreiben eines Schlüssel und setzten des Wertes funktioniert soweit auch..
Nur bekomme ich hier einen Fehler? Habe ich bei dem Pfad etwas falsch gemacht?RegCreateKeyEx(HKEY_USERS,".DEFAULT\\Control Panel\\PowerCfg","Test",0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hkey,0);Gruß, Stephan
EDIT: Und dann weiß ich nicht, wie ich einen Schlüssel vom Typ REG_SZ erstelle. Im Moment sind die Einträge ja alle vom Typ REG_DWORD..
-
Freddy84 schrieb:
Nur bekomme ich hier einen Fehler?
Was denn für einen?
Freddy84 schrieb:
Und dann weiß ich nicht, wie ich einen Schlüssel vom Typ REG_SZ erstelle. Im Moment sind die Einträge ja alle vom Typ REG_DWORD..
Findest du doch alles in dem FAQ-Beitrag

-
In der Zeile, die ich kopiert habe meldet er die Fehler:
- invalid conversion fromconst char*' to \- invalid conversion from \int' to `
- cannot convert `HKEY__**' to `DWORD*' forIch weiß da nicht wirklich was mit anzufangen

-
Was genau hast du denn kopiert bzw. wie sieht dein jetziger Code aus?!