![]() |
Fremdes Fenster schließen
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
ich hab ein Problem und zwar lass ich mir von einer Webseite alle Links ausgeben, aber sobald diese Funktion ausgefhürt wird erhalte ich eine Meldung von Windows. Siehe Anhang Nein Sie lässt sich leider nicht abschalten, alles schon versucht, was im Internet steht. Nun will ich einfach, das diese meldung geschlossen wird automatisch oder irgendwe unterdrückt wird? |
AW: Fremdes Fenster schließen
Siehe
![]() |
AW: Fremdes Fenster schließen
Intranetsite wird bei Verwendung einer FQDN- oder IP-Adresse als Internetsite identifiziert
Da ich keine Intranetseite aufrufe, fällt das wohl raus ... bzw. * \\Computer.Unterdomäne.Domäne.com\Freigabe * ![]() * \\157.54.100.101\Freigabe * file://157.54.100.101/Freigabe * ![]() Greife ich so auf keine Webseite zu, die diesen Fehler aufrufen könnte. |
AW: Fremdes Fenster schließen
Hast du dein Beitrag gelesen? wohl kaum!
Füge die Adresse zu den vertrauenswürdigen Sites hinzu. |
AW: Fremdes Fenster schließen
Mit FindWindow das Fensterhandle ermitteln und dann mit der Nachricht WM_CLOSE schließen.
|
AW: Fremdes Fenster schließen
Zitat:
|
AW: Fremdes Fenster schließen
Zitat:
brachte allerdings nicht viel... Zugriff erfolgt: http//www.google.de/ z.B |
AW: Fremdes Fenster schließen
Zitat:
Bzw. wie umgeh ich das, dass sich das Programm an dieser Meldung aufhält |
AW: Fremdes Fenster schließen
Dann musst du einen zweiten Thread starten, welcher auf das Erscheinen des Fensters wartet und es schließt, wenn es auftaucht.
|
AW: Fremdes Fenster schließen
Hm das ist für mich natürlich sehr ungünstig, da ich noch nie mit Threads gearbeitet habe.
Ein Thread Objekt erstellen ist in Delphi ja nicht schwer aber wie ich den Thread dann verwende weiß ich leider gar nicht. |
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:
![]() 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 ![]() Bernhard |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:43 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