"Übernehmen" funktion in Applikation



  • Hallo

    Wenn man z.B. die Bildschirmauflösung ändert, kann man auf "Übernehmen" klicken und alle Änderungen sind aktiv.

    Ebenso kann man beim Internet Explorer, nachdem man seine Einstellungen gemacht hat, auf "OK" klicken, und die Einstellungen werden übernommen ohne Neustart der Applikation.

    Wie kann ich eine solche "Übernehmen" Funktion in mein Programm implementieren.
    Ich will die Änderungen in meiner Applokation übernehmen, ohne diese neu starten zu müssen.

    A) Geht das überhaupt ?
    😎 Wie ?



  • naja ich würd mal sagen

    void OnApply()
    {
        if (flagattributes == CHANGED)
            SetAttributes(einstellungen);
        if (flagresolution == CHANGED)
            SetResolution(640*480);
    }
    

    Einfach in dem Handler für den Übernehmen Button die Funktionen aufrufen in der du etwas ändern willst und halt eine flag erstellen die angibt ob sich etwas geändert hat, sollte eigentlich funktionieren



  • OK, das Problem ist nur, das ich überhaupt gar keine Einstellungen
    des Bildschirms mache, sondern Einträge zur Initialisierung der Applikation in der Registry änder (Speicherort z.B., dieser wird dann immer erst nach dem Neustart des Programms übernommen)



  • Total Lamer schrieb:

    Einträge zur Initialisierung der Applikation in der Registry änder (Speicherort z.B., dieser wird dann immer erst nach dem Neustart des Programms übernommen)

    hm naja wenn du Einträge zur Initialisierung der App machts warum soll das dann gleich übernommen werden?? Die Initialisierung erfolgt ja beim Start der Applikation.. versteh nicht ganz was du willst 😕



  • Du liest den Speicherort doch bestimmt in InitInstance aus - lager das doch in eine Funktion aus und ruf diese dann explizit auf. 🙂



  • Es ist so, das ich bereits ZIG Threads mit meine eigentlichen Problem geöffnet habe, aber mir darauf keiner Antwortet, daher wollte ich erstmal etwas allgemeiner Nachfragen.

    Hier mein Prob:

    Ich mache in meiner Applikation Einträge in den Cache des Internet Exploers
    Während der Laufzeit ändere ich aber in der Registry den Ort des Cache des Internet Explorers, da ich wöhrend der Laufzeit verschiedene Inhalte in den Cache schreiben muss.

    Leider geht das nicht während der Laufzeit, sondern immer erst, nachdem ich meine Applikation neu starte, und das will ich irgendwie verhindern/übergehen.



  • ...Bahnhof... 😞



  • da müsst ich mich mehr auseinandersetzen mit sowas
    tut mir leid da kann ich dir auch nicht helfen 😞



  • Kann es sein das manche Einstellung NUR nach einem Neustart funktionieren ?
    Oder gibt es irgendeine andere Möglichkeit...

    Irgendwo muss doch das Zeug stehen, das er beim Start ausliest....
    Weiss von euch vielleicht einer wie ich an eine Lösung meines Problems rankommen könnte ?

    Google hat mir nicht geholfen, und nach Seite 48 gehts auch nimmer weiter hehe



  • Vielleicht kannst du uns ja mal den Quelltext zeigen, der für die Einstellungen nötig ist (also das Einlesen).

    Wenn du in den Internetexplorereinstellungen "rummachst", wieso reicht dann nicht ein Neustart von dem?

    Ginge es vielleicht, dir den Zustand deiner Anwendung zu merken und sie in einer neuen Instanz zu starten und dann die alte zu beenden? 😕



  • Also im Prinzip benutze ich in meiner Applikation die Funktionen CreateUrlCacheEntry und CommitUrlCacheEntry aus der MSDN Library.

    So änder ich dann den Cache,

    //------Create The Key--------
    bOK = (ERROR_SUCCESS == RegCreateKey(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders", &hKey));
    if (!bOK)
    return(bOK);
    //-----Create The Value-------
    bOK = (ERROR_SUCCESS == RegSetValueEx(hKey,"Cache", 0, REG_EXPAND_SZ, userKey, sizeof(userKey)+1));
    if (!bOK)
    return(bOK);
    //------Close The Key---------
    bOK = (ERROR_SUCCESS == RegFlushKey(hKey));
    if (!bOK)
    return(bOK);

    Ab dem Zeitpunkt geht dann nix mehr.
    Die Daten werden weder in den alten noch in den neuen Cache geschrieben sondern sind dann einfach weg.
    Wenn ich dann Neustarte, dann gehts wieder, und er schreibt fleissig in den neuen Cache....

    Ich lese die Cache Informationen selber überhaupt garnicht ein, weil letztendlich die Applikation den Internet Explorer benutzt, und was dieser macht, weiss ich nicht, da Billy Boy seine Sourcen noch nicht freigegeben hat 😉



  • nicht schon wieder 😡



  • Nicht schon wieder

    Spitzen Antwort, wie binde ich das in meinen Code ein ?



  • Der IE hllt sich seine Einstellungen nunmal beim Start. Wenn du diese änderst musst du den IE neu starten. Ist wie Windows. Wenn man was installiert braucht windows auch immer einen Neustart.

    Ob man den IE zwingen kann zu reloaden weiß ich IMHO nicht.



  • Vielen Dank für die Antwort, immerhin weiss ich nun, wo ich ansetzen muss.


Anmelden zum Antworten