Autor Beitrag
An(t)on Ym
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Sa 27.06.09 16:47 
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: 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?

_________________
In the beginning was the word.
And the word was content-type: text/plain.
An(t)on Ym Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: So 28.06.09 09:41 
Also im Endeffekt müsstest du hier im Forum einiges dazu finden.

Hier mal die Kurzfassung:
Auf www.indyproject.org/ gehen und dort die Komponenten herunterladen. Also hier: indyproject.org/Sock...Installation.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.

_________________
In the beginning was the word.
And the word was content-type: text/plain.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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.
ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: So 28.06.09 10:49 
user profile iconmatze hat folgendes geschrieben Zum zitierten Posting springen:
Also im Endeffekt müsstest du hier im Forum einiges dazu finden.

Hier mal die Kurzfassung:
Auf www.indyproject.org/ gehen und dort die Komponenten herunterladen. Also hier: indyproject.org/Sock...Installation.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
ausblenden 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.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 28.06.09 10:57 
Sag doch gleich, dass es um Rapidshare geht...
Du musst für den Zugriff auf SSL auch noch OpenSLL einbauen.
www.delphi-forum.de/....php?p=567361#567361
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 28.06.09 13:15 
Moin!

user profile iconAn(t)on Ym hat folgendes geschrieben Zum zitierten Posting springen:
Wie kann ich den Cache oder die Cookies von einem TWebBrowser löschen?
user profile iconmatze hat folgendes geschrieben Zum zitierten Posting springen:
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.: ;)
ausblenden volle Höhe 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:
// -----------------------------------------------------------------------------
// IE-Cache leeren (threadbasierte Version)
// -----------------------------------------------------------------------------
//
// V1.00 05.01.2008, Narses
//   - erste Version
//
// (C) 2008 Narses
// -----------------------------------------------------------------------------

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;

// WinINet-Functions: http://msdn2.microsoft.com/en-us/library/aa385473(VS.85).aspx
procedure TClearIECacheThread.Execute;
  var
    lpEntryInfo: PInternetCacheEntryInfo;
    hCacheDir: LongWord;
    dwEntrySize: LongWord;
begin
  dwEntrySize := 0;
  FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^), dwEntrySize);
  GetMem(lpEntryInfo, dwEntrySize);
  try
    if (dwEntrySize > 0then
      lpEntryInfo^.dwStructSize := dwEntrySize;
    hCacheDir := FindFirstUrlCacheEntry(nil, lpEntryInfo^, dwEntrySize);
    if (hCacheDir <> 0then
      repeat
        if DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName) then // http://msdn2.microsoft.com/en-us/library/aa383983.aspx
          Inc(FCount);
        FreeMem(lpEntryInfo, dwEntrySize);
        dwEntrySize := 0;
        FindNextUrlCacheEntry(hCacheDir, TInternetCacheEntryInfo(nil^), dwEntrySize);
        GetMem(lpEntryInfo, dwEntrySize);
        if (dwEntrySize > 0then
          lpEntryInfo^.dwStructSize := dwEntrySize;
      until (NOT FindNextUrlCacheEntry(hCacheDir, lpEntryInfo^, dwEntrySize))
            or Terminated;
  finally
    FreeMem(lpEntryInfo, dwEntrySize);
  end;
  FindCloseUrlCache(hCacheDir)
end;

end.

user profile iconmatze hat folgendes geschrieben Zum zitierten Posting springen:
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

_________________
There are 10 types of people - those who understand binary and those who don´t.
matze
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: Mo 29.06.09 08:50 
Klappts denn mittlerweile auch mit den Indys?

_________________
In the beginning was the word.
And the word was content-type: text/plain.
noobie123
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 15.02.11 22:32 
Moin!

user profile iconnoobie123 hat folgendes geschrieben Zum zitierten Posting springen:
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: ;)
ausblenden 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

_________________
There are 10 types of people - those who understand binary and those who don´t.