Entwickler-Ecke
Internet / Netzwerk - WebBrowser - Cookie/Cache leeren?
An(t)on Ym - Sa 27.06.09 16:47
Titel: WebBrowser - Cookie/Cache leeren?
Hallo.
Ich code gerade an einem kleinen Tool, was überpüft, ob sich eine Seite verändert hat.
Dazu ruft es diese Seite immer wieder auf, und überprüft ob sich im Quelltext ein bestimmter String befindet.
Leider funktioniert das nicht - bzw. nur beim ersten Besuch. Ich denke, dass er die Seite cached oder ein Cookie verhindert, dass er einen neuen Versuch starten kann.
Meine Frage daher:
Wie kann ich den Cache oder die Cookies von einem TWebBrowser löschen?
Vielen Dank und einen schönen Samstag wünsche ich,
Anton.
matze - Sa 27.06.09 17:06
Da der TWebbrowser den Internet Explorer verwendet, könntest du einfach vom IE die Cookies und den Cache löschen. Das ist aber nicht der Hit.
Besser ist es, wenn du einfach für deine Aufgabe die Indy Http Komponente verwendest. Du brauchst ja nur den HTML Quelltext und musst die Seite nicht darstellen oder?
An(t)on Ym - Sa 27.06.09 19:36
Erst einmal Danke für die Antwort.
Hab mir jetzt mal die Indy Komponente angeschaut und blick das leider gar nicht.
Ich arbeite mit Delphi 7 und habe nun keine Ahnung, wie ich mir den Quelltext downloaden soll.
Hättest du vielleicht eine kleine Hilfestellung parat?
Dankeschön und schönen Abend,
Anton.
matze - So 28.06.09 09:41
Also im Endeffekt müsstest du hier im Forum einiges dazu finden.
Hier mal die Kurzfassung:
Auf
http://www.indyproject.org/ gehen und dort die Komponenten herunterladen. Also hier:
http://indyproject.org/Sockets/Docs/Indy10Installation.DE.aspx
Auf dieser Seite steht dann auch schon, was du machen musst um die Komponenten zu installieren.
Danach findest du in deiner Toolbox einen Haufen neue Komponenten. Davon ziehst du dir die idHTTP auf dein Formular und kannst dann mit z.b.
s := idhttp1.get('http://www.google.de'); Den Quelltext der Google Seite in den String s laden.
jaenicke - So 28.06.09 10:26
Wobei die Installation nicht einmal nötig ist. Es reicht die Pfade in den Bibliothekspfad aufzunehmen, dann kann man das schon benutzen. Nebenbei funktioniert es so dann auch problemlos in Turbo Delphi.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| uses IdHttp;
var HttpLoader: TIdHttp; PageContents: String; begin HttpLoader := TIdHttp.Create; try PageContents := HttpLoader.Get('http://www.example.com'); finally HttpLoader.Free; end; end; |
An(t)on Ym - So 28.06.09 10:49
matze hat folgendes geschrieben : |
Also im Endeffekt müsstest du hier im Forum einiges dazu finden.
Hier mal die Kurzfassung:
Auf http://www.indyproject.org/ gehen und dort die Komponenten herunterladen. Also hier: http://indyproject.org/Sockets/Docs/Indy10Installation.DE.aspx
Auf dieser Seite steht dann auch schon, was du machen musst um die Komponenten zu installieren.
Danach findest du in deiner Toolbox einen Haufen neue Komponenten. Davon ziehst du dir die idHTTP auf dein Formular und kannst dann mit z.b. s := idhttp1.get('http://www.google.de'); Den Quelltext der Google Seite in den String s laden. |
Nunja: Beim Ausführen von
Delphi-Quelltext
1:
| quelltext := idhttp1.Get('https://ssl.rapidshare.com/cgi-bin/premiumzone.cgi?login=+' + lstAccounts.Items.Item[i].SubItems.Strings[0] + '&password=' + lstAccounts.Items.Item[i].SubItems.Strings[1]); |
krieg ich nen schicken Fehler:
IOhandler is not valid.
Dabei hab ich es genauso gemacht, wie du es geschrieben hast.
Gäbs vielleicht nicht doch die Möglichkeit, dem WebBrowser zu verbieten, Cache + Cookies zu speichern?
Danke fürs Lesen und schönen Sonntag,
Anton.
Narses - So 28.06.09 13:15
Moin!
An(t)on Ym hat folgendes geschrieben : |
Wie kann ich den Cache oder die Cookies von einem TWebBrowser löschen? |
matze hat folgendes geschrieben : |
Da der TWebbrowser den Internet Explorer verwendet, könntest du einfach vom IE die Cookies und den Cache löschen. |
Um mal kurz die ursprüngliche Frage zu beantworten, so z.B.: ;)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72:
| unit IECache;
interface
uses Classes;
type TClearIECacheThread = class(TThread) private FCount: Integer; public constructor Create(const AOnTerminate: TNotifyEvent = NIL); procedure Execute; override; property Count: Integer read FCount; end;
implementation
uses WinINet;
constructor TClearIECacheThread.Create; begin inherited Create(FALSE); FreeOnTerminate := TRUE; OnTerminate := AOnTerminate; end;
procedure TClearIECacheThread.Execute; var lpEntryInfo: PInternetCacheEntryInfo; hCacheDir: LongWord; dwEntrySize: LongWord; begin dwEntrySize := 0; FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^), dwEntrySize); GetMem(lpEntryInfo, dwEntrySize); try if (dwEntrySize > 0) then lpEntryInfo^.dwStructSize := dwEntrySize; hCacheDir := FindFirstUrlCacheEntry(nil, lpEntryInfo^, dwEntrySize); if (hCacheDir <> 0) then repeat if DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName) then Inc(FCount); FreeMem(lpEntryInfo, dwEntrySize); dwEntrySize := 0; FindNextUrlCacheEntry(hCacheDir, TInternetCacheEntryInfo(nil^), dwEntrySize); GetMem(lpEntryInfo, dwEntrySize); if (dwEntrySize > 0) then lpEntryInfo^.dwStructSize := dwEntrySize; until (NOT FindNextUrlCacheEntry(hCacheDir, lpEntryInfo^, dwEntrySize)) or Terminated; finally FreeMem(lpEntryInfo, dwEntrySize); end; FindCloseUrlCache(hCacheDir) end;
end. |
matze hat folgendes geschrieben : |
Das ist aber nicht der Hit.
Besser ist es, wenn du einfach für deine Aufgabe die Indy Http Komponente verwendest. |
Das ist allerdings richtig. :)
cu
Narses
matze - Mo 29.06.09 08:50
Klappts denn mittlerweile auch mit den Indys?
noobie123 - Di 15.02.11 22:14
hi, danke für die arbeit mit dieser unit.
ich habe win7, IE 9 Beta und TembeddedWB von bsalsa und habe auch das problem dass ich nicht den cache leeren kann.
ich wollte mal fragen wie ich denn diese unnit richtig aufrufe damit der cache gelöscht wird?
die unit hab ich schon bei den uses eingetragen, bloß wenn ich dann als befehlszeile folgendes eingebe werde ich überrolt mit befehlen:
IECache.TClearIECacheThread. ... ... ... ...
mfg
Narses - Di 15.02.11 22:32
Moin!
noobie123 hat folgendes geschrieben : |
ich wollte mal fragen wie ich denn diese unnit richtig aufrufe damit der cache gelöscht wird?IECache.TClearIECacheThread. ... ... ... ... |
Das ist es doch schon fast: ;)
Delphi-Quelltext
1:
| TClearIECacheThread.Create; |
für den ganz einfachen Fall. Wenn du wissen willst, wann das Ganze fertig ist, einfach eine entsprechenden Methode als Parameter mit übergeben. :idea:
cu
Narses
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!