AW: Fremdes Fenster schließen
Also ein WM_Close ist aber nicht so ganz das richtige. Du wirst schon den Button mit der Aufschrift "JA" suchen müssen und den dann Klicken müssen. Dafür gibt es eine BN_*- oder BM_*-Konstante. Wie du an den Button rankommst: WinSpy
Mit Threads arbeiten: Du erstellst ein Objekt, welches von TThread abgeleitet wird. Dann überschreibst du die Execute-Prozedur (mit Hilfe der Programmierhilfe geht das ganz einfach). In deiner Execute-Prozedur wirst du als allererstes mal so 2 Sekunden oder mehr warten müssen (das Fenster benötigt ja auch eine gewisse Vorlaufzeit, bis es da ist (du kannst ja nicht gleichzeitig den Thread starten während das Fenster kommt). Der Thread muss das .FreeOnTerminate gesetzt haben (:= true), dann fegt er sich auch gleich noch sauber aus dem Speicher. Bernhard EDIT: Du willst alle Links? - Warum dann nicht mit IdHTTP zugreifen? |
AW: Fremdes Fenster schließen
Zitat:
Ich geif doch per IdHTTP darauf zu?
Delphi-Quellcode:
procedure GetLinksFromURL(url: string; s: THashedStringList;);
var doc: IHTMLDocument2; IdHTTP: TIdHTTP; begin Assert((url <> '') and Assigned(s)); IdHTTP := TIdHTTP.Create; try IdHTTP.HandleRedirects := true; IdHTTP.Request.UserAgent := 'User-agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1)'; doc := GetDocument(IdHTTP.Get(url)) as IHTMLDocument2; if Assigned(doc) then ExtractLinks(doc, s); finally IdHTTP.Free; end; end; |
AW: Fremdes Fenster schließen
Die Meldung kommt mir aber so vor, als würdest du die TWebbrowser-Wrapper-Klasse verwenden. Solch eine Meldung finde ich für Indy unüblich.
Bernhard |
AW: Fremdes Fenster schließen
Delphi-Quellcode:
Sehen die weiteren functionen/proceduren aus aus
procedure ExtractLinks(doc: IHTMLDocument2; s: THashedStringList);
var ec: IHTMLElementCollection; e: IHTMLElement; i: integer; url: Variant; begin ec := doc.links; for i := 0 to Pred(ec.length) do begin e := ec.item(i, 0) as IHTMLElement; url := VarToStr(e.getAttribute('href', 0)); if url <> '' then s.Add(url); end; end; function GetDocument(const markup: WideString): IDispatch; var doc: OleVariant; begin Result := CoHtmlDocument.Create; doc := Result; doc.Open; doc.Write(markup); doc.Close; end; |
AW: Fremdes Fenster schließen
Wenn du JavaScript haben willst, kommst du um einen Renderer nicht drum rum. Ohne JavaScript gehts auch anders. Du musst halt mit einem XML-Parser der auch Fehler akzeptiert da ran und dir dann die href-Attribute der A-Tags geben lassen.
Bernhard |
AW: Fremdes Fenster schließen
Hm wie meinst du das einen rendere?
|
AW: Fremdes Fenster schließen
Also guck mal: Wenn per Javascript irgendwelche Links erzeugt werden, dann trägt die der IE schön in seinen DOM ein und du kannst die Javascript-Links auch finden.
Wenn du auf diese verzichten kannst, kannst du auch einen einfachen XML-Parser nehmen. Die sind bestimmt schneller. (Diesen nehme ich hier) Bernhard |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz