Regedit (Registry bearbeiten!)



  • Hallo

    wo ist das Problem?
    In der BCB-Hilfe ist doch schon ein fertiger Code zum Lesen

    #include <Registry.hpp>
    
    AnsiString GetRegistryValue(AnsiString KeyName)
    {
      AnsiString S;
      TRegistry *Registry = new TRegistry;
      try
      {
        Registry->RootKey = HKEY_LOCAL_MACHINE;
        // Übergibt false, da der Schlüssel nicht automatisch erstellt werden soll
        Registry->OpenKey(KeyName,false); 
        S = Registry->ReadString("VALUE1");
      }
      __finally
      {
        delete Registry;
      }
      return S;
    }
    

    Und wenn du bei TRegistry::WriteString() schaust, kannst du dann ganz leicht das Schreiben umsetzen.

    Wenn jemand sagt, schau mal in der BCB-Hilfe zu einem bestimmten Stichwort nach, dann ist das meistens ernst gemeint.

    bis bald
    akari



  • Problem is jetzt nur das ich ein totaler Abfänger bin!!!

    Und mein nächstes prob is das ich eine englische Borland Version habe!
    Also versteh ich die Hilfe auch nicht so ganz!!



  • Meiner Meinung nach sollten Englischkenntnisse zum Programmieren dazugehören.

    Also: Du weißt, wo du Informationen finden kannst. Was hast du bereits konkret versucht (Quelltext?) und wo liegt das genaue Problem? Einfach nur "ich hätte gerne das und das" ist eine sehr weit gefasste Umschreibung.



  • Hallo

    Problem is jetzt nur das ich ein totaler Abfänger bin!!!

    Und warum willst du dann gleich etwas machen, was dein Wissen völlig übersteigst?
    Warum fängst du nicht mit den Grundlagen an?
    Arbeite doch mal Standard C++ Tutorials (siehe Menü auf dieser Seite oben rechts) durch und lerne erstmal, einfache Konsolenprogramme zu schreiben und Gesamtprobleme in einzelne Schritte aufzuteilen.

    bis bald
    akari



  • Danke ihr Übermenschen ihr habt ja wahrscheinlich alle in Englisch ne 1!
    Na toll man lernt in der Schule doch kein Fachenglisch!!

    Naja werd ich mir wohl wo anders Hilfe suchen, trotdem danke 😡 !

    Und warum willst du dann gleich etwas machen, was dein Wissen völlig übersteigst?

    Gute frage, weil der Rest voll öde ist!



  • Wo ist eigentlich dein Problem? Akari hat dir bereits die Lösung gewissermaßen vorgekaut. Verstehst du den Quelltext nicht? Oder kannst du mit den einzelnen Parametern nichts anfangen?

    Mit fettem, unterstrichenem Text und 20 Smilies pro Post brauchst du nicht zu erwarten sofort konkrete Hilfe zu bekommen. Es gab hier erst einen Thread zum Thema "Hilfe zur Selbsthilfe".

    Was ist denn so schwer daran zu beschreiben, was du genau versucht hast, damit wir in der Lage sind dein Problem nachzuvollziehen?

    Oder willst du nur fertigen Quelltext für Copy'n'Paste aus dem du im Endeffekt auch nicht schlauer wirst als aus dem Codeschnipsel von akari?

    [EDIT] Sehr schön (auch für mich sehr hilfreich) ist im Übrigen http://dict.leo.org. [/EDIT]

    [EDIT2]

    Gute frage, weil der Rest voll öde ist!

    Das stimmt nicht. Ich war so stolz, als ich auf der Konsole bunte Texte ausgeben konnte. Und dann erst die Bewältigung des Grafik-Modus. Ich habe über ein halbes Jahr daran geknobelt. Damals wusste ich auch noch nichts vom Internet sondern musste mich selbst durchbeißen. Das waren noch Zeiten... [/EDIT2]



  • jo aber heut zu tage gibs nunmal das internet mit fertigen codes und so!
    Dadurch bin ich extrem faul geworden und hab das alles nicht so richtig gelernt.
    Und da hab ich halt ma ne Funktion gesehen um die regedit zu verändern und
    wollt das dann halt ma aus probieren.
    Inzwischen hab ich auch ein prog im internet gefunden welches in etwa das mach
    was ich will!

    Und natürlich war ich auch stolz auf mein erstes program!

    Aber trotzdem intressiere ich mich dafür wie sowas funktionirt!

    Der code von Akari steht so in der Hilfe von BCB ich wusste halt jetzt nicht was
    genau man da noch machen muss, weil ich wie ich wie es mein acc iname schon sagt
    ein noob bin!



  • hm. ich denke, man kann sich doch mal entspannen und locker machen, wenn jemand hier nach erklärungen fragt, zumal ich das problem der englischsprachigen dokumentationen und tutorials auch noch kenne. wenn man sich "auskennt" gibt man oft tipps, die jemand der anfänger ist einfach nicht umsetzen kann, obwohl es für einen selbst trivial erscheint. er hat ja nun auch nicht total dreist nach fertigem code gefragt am anfang. selbst wenn. es muss ihm ja keiner helfen, der nicht dazu bereit ist. und so weiter. warum über smileys und fetten unterstrichenen text aufregen. in diesem sinne wünsch ich gesundheit, glück und vor allem gelassenheit



  • Bei mir in der Hilfe steht nun folgendes:

    void __fastcall TForm1::WMEndSession(TWMEndSession &Message)
    {
      TRegistry *Reg = new TRegistry;
      try
      {
        Reg->RootKey = HKEY_CURRENT_USER;
        if (Reg->OpenKey("\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce", true)
        {
          Reg->WriteString("MyApp","\"" + ParamStr(0) + "\"");
          Reg->CloseKey();
        }
      }
      __finally
      {
        delete Reg;
        TForm::WMEndSession(Message);
    
      }
    }
    
    In order for this method to be called, it must be declared in your main form class as follows:
    
    class PACKAGE TForm1 : public TForm
    
    {
      ...
    protected:
    
    BEGIN_MESSAGE_MAP
      MESSAGE_HANDLER(WM_ENDSESSION, TWMEndSession, WMEndSession)
    END_MESSAGE_MAP(TForm)
    };
    

    Ok ich hab keinen Plan ich glaub den 2 Teil hab ich richtig gemacht, aber beim ersten bekomm ich immer die fehler:

    [C++ Error] FormMain.cpp(24): E2377 If statement missing )
    [C++ Error] FormMain.cpp(32): E2451 Undefined symbol 'WMEndSession'
    

    Bitte Bitte Bitte helft mir!



  • if (Reg->OpenKey("\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce", true))



  • FALSCH:

    if (Reg->OpenKey("\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce", true)
    

    hier fehlt eine Klammer.
    RICHTIG:

    if (Reg->OpenKey("\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce", true))
    

    Die zweite Fehlermeldung gehört in den Bereich 'advanced' C++ builder Programmierung. Wenn Du direktes API-Programmieren lernst lernst Du das ziemlich am Anfang.
    Du mußt eine Funktion schreiben die da lautet WMEndSession in der Du die WM_ENDSESSION Meldung abarbeiten kannst. Alles klar ? Kompliziert oder ?
    Du bist definitiv ein Anfänger und solltest wirklich mit etwas leichterem anfangen. Das ist nicht herablassend oder böse gemeint. Einfach nur ein Rat.

    Gruß.
    Fed. 🙄



  • In der Header-Datei, also in der .h Datei in dienem Form (meißt Unit1.h) musst du folgende Zeile in
    Public ergänzen:

    void __fastcall WMEndSession(TWMEndSession &Message);
    

    Martin


Anmelden zum Antworten