Reg-Änderungen aktivieren?



  • Hallo zusammen,

    vielleicht kann mir jemand bei einem Problem helfen - ich habe es schonmal gepostet aber keine Antwort/Anregung bekommen 😞

    Ich möchte mit einem Tool im InternetExplorer Dinge ändern (z.B. JavaScript aktivieren/deaktivieren). Dazu ändere ich (natürlich) die entsprechenden Schlüssel und Werte in der Registrierung. Soweit so gut. Quellcode dazu:

    void __fastcall TForm1::OKButtonClick(TObject *Sender){
    //Hier wird der Wert in die Registry geschrieben
    AnsiString Schluessel = "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\3";
    AnsiString Eintrag = "1400";
    TRegistry *Reg = new TRegistry;
    try{
    Reg->RootKey = HKEY_CURRENT_USER;
    Reg->OpenKey(Schluessel,false);
    int Wert = JavaScriptGroup->ItemIndex;
    switch(Wert){
    case 0 : Reg->WriteInteger(Eintrag,0); break;
    case 1 : Reg->WriteInteger(Eintrag,1); break;
    case 2 : Reg->WriteInteger(Eintrag,3); break;
    default : ShowMessage("Fehler: Unzulässiger Index von JavaScriptGroup!");
    }
    Reg->CloseKey();
    }// Ende try
    __finally{
    delete Reg;
    }// Ende finally
    //Danach Button wieder disablen:
    OKButton->Enabled = false;
    //Fehlt noch den Reg-Eintrag zu aktivieren...
    //SendMessage(HWND_BROADCAST,WM_SETTINGCHANGE,0,Schluessel.c_str());
    }
    

    Das (ungelöste) Problem besteht nun darin, daß die Änderung nicht sofort im IE aktiv wird, sondern erst nach erneutem öffnen oder nach öffnen der InternetSettings und einem Klick auf OK. Das ist natürlich aber nicht Sinn der Sache.
    Einen Hinweis habe ich bekommen daß das irgendwie mit SendMessage zu machen ist, allerdings kann ich beim Besten Willen nicht herausfinden wie genau. Die auskommentierte Zeile am Ende funktioniert jedenfalls so nicht.

    Weiß jemand die (eine) Lösung? Ich würde mich freuen.

    Bye
    Reiko



  • Lass es bleiben. So gut wie kein Programm reagiert auf externe Änderung seiner eigenen Einstellungen ohne Neustart.



  • Doch...es muß gehen...ich kenne da konkret ein Tool das heißt ToggleImages glaube ich (aus den IE-Power-Tools?) das macht genau sowas (es ändert in der Registry ob Images angezeigt werden sollen oder nicht und aktiviert das auch sofort). Das funktioniert wunderbar, es muß also eine Möglichkeit geben 🙂



  • Du mußt das andere Programm dazu bringen seine Einstellungen aus der Registry neu einzulesen. Und das wird ein Problem, weil sie es eben nur beim Start einmal machen bzw. wenn man im Programm selber direkt was ändert.



  • Dann kannst du doch mit Spy++ schauen, was für Messages das andere Programm sendet!



  • ne



  • Tag,

    Spy++? Ne? Geht es ein "bisschen" genauer? 😉

    Danke
    Reiko



  • Sorry, sehe gerade, dass du anscheinend mit dem BCB arbeitest! Spy++ ist ein Tool, das bei VisualStudio dabei ist und anzeigt, was für Messages gesendet werden. Aber vielleicht ist sowas in der Art ja auch beim BCB dabei 🙂



  • Vielleicht hilft es ja wenn du einen Buttonclick auf den Übernehmenbutton der Internetoptionen simulierst? 😕

    MfG Spacelord



  • @Spacelord
    Wie soll man einen Buttonclick auf ein Fenster simulieren, dass nicht existiert?


Anmelden zum Antworten