![]() |
WinInet.InternetSetOption Problem - WinInet-Cache?
Ich möchte aus meinem Programm-Code heraus die IE Proxy-Einstellungen ändern.
Dazu ändere ich die Einstellungen in der Registry und teile Windows mit, dass diese geändert wurden. Dieses Vorgehen wird auf hunderten von Seiten im Internet so beschrieben und funktioniert auf den ersten Blick auch. Das Problem ist nun: Es funktioniert nur ein einziges Mal im aktuellen Prozess! Hier ein simples Beispiel:
Delphi-Quellcode:
Zum Nachvollziehen:
procedure DisableProxy;
var Reg : TRegistry; begin Reg := TRegistry.Create; Reg.Rootkey:= HKEY_CURRENT_USER; Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Internet Settings',False); Reg.WriteBool('ProxyEnable',False); Reg.CloseKey; Reg.Free; InternetSetOption(nil, INTERNET_OPTION_SETTINGS_CHANGED, nil, 0); //oder InternetSetOption(nil, INTERNET_OPTION_REFRESH, nil, 0); end; 1. Die obere Funktion in ein neues Projekt einbinden, sodass es mit einem Button ausgeführt werden kann. 2. Manuell einen beliebigen Proxy einstellen (Systemsteuerung > Internetoptionen > Verbindungen > LAN-Einstellungen > [x]Proxyserver für LAN verwenden und eine Adress+Port eingeben) und bestätigen 3. Im Programm den Button betätigen 4. Die Einstellungen über die Inernetoptionen überprüfen -> Haken ist weg 5. Haken wieder setzen und bestätigen 6. Im Programm den Button wieder betätigen 7. Die Einstellungen überprüfen -> Haken ist immer noch da! :( 8. Programm schließen, wieder starten, Button betätigen 9. Einstellungen prüfen -> Haken weg! InternetSetOption funktioniert nur beim ersten Aufruf korrekt. Beim zweiten Aufruf werden die manuellen Registry-Änderungen einfach verworfen. Ich verstehe absolut nicht warum, vermute aber, dass WinInet irgendwie bzw. irgendwas cached. Lässt sich das unterbinden oder umgehen? :( |
AW: WinInet.InternetSetOption Problem - WinInet-Cache?
Ich muss diesen alten Beitrag hier nochmals hochholen, da ich genau das gleiche Problem habe. Hat niemand eine Idee?
@codex: Hast Du damals eine Lösung für das Problem gefunden? VG Sascha |
AW: WinInet.InternetSetOption Problem - WinInet-Cache?
setze TRegistry.LazyWrite auf false
|
AW: WinInet.InternetSetOption Problem - WinInet-Cache?
Hallo Simon,
bringt leider auch nichts. In die Reg schreibt er alles korrekt. Aber sobald ich
Delphi-Quellcode:
InternetSetOption(nil, INTERNET_OPTION_SETTINGS_CHANGED, nil, 0);
ein zweites mal innerhalb der Anwendung aufrufe, überschreibt er den Reg-Eintrag wieder. Beende ich das Programm und starte es dann nochmal, klappt es wieder. Aber eben auch nur einmal :-( VG Sascha |
AW: WinInet.InternetSetOption Problem - WinInet-Cache?
Gibt es echt niemanden, der dieses Problem schon mal hatte? Das kann ich mir einfach nicht vorstellen, vor allem weil es so leicht reproduzierbar ist.
VG Sascha |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz