Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi FireFox im hintergrund öffnen und link kopieren (https://www.delphipraxis.net/101234-firefox-im-hintergrund-oeffnen-und-link-kopieren.html)

0NyX 10. Okt 2007 10:02


FireFox im hintergrund öffnen und link kopieren
 
Guten Tag liebe DP USer,

ich bin grade dabei ein kleines Programm für mein Eigengebrauch zu entwickeln was mir ein wenig arbeit abnehmen soll ;)

Ich habe aber leider 3 Probleme... :-[

1. Wie kann ich im Hintergrund den FireFox oder IE öffnen mit einem bestimmten Link ohne das es mich stört, also das ich es nicht sehe?

2. Wie kann ich dann da auf einem Button klicken auf der Seite?

3. Wie kann ich dann den Link aus der Adresszeile kopieren?

Ich danke euch jetzt schon mal vielmals für eure Bemühungen mir zu helfen!


Mit freundlichen Grüßen
0NyX

OregonGhost 10. Okt 2007 10:14

Re: FireFox im hintergrund öffnen und link kopieren
 
1. CreateProcess übernimmt im StartupInfo einen Parameter für ShowWindow, da könntest du z.B. SW_SHOWMINNOACTIVE angeben (minimiert, nicht aktiviert).
2. Nicht ganz so einfach. Entweder den Browser über COM fernsteuern, oder mit FindWindowEx und co den entsprechenden Button suchen.
3. Wie 2., nur mit Edit statt Button.

Das sind jetzt zwar nur Anregungen, aber im Zweifel solltest du das als Suchbegriffe verwenden können.

0NyX 10. Okt 2007 10:41

Re: FireFox im hintergrund öffnen und link kopieren
 
Zitat:

Zitat von OregonGhost
1. CreateProcess übernimmt im StartupInfo einen Parameter für ShowWindow, da könntest du z.B. SW_SHOWMINNOACTIVE angeben (minimiert, nicht aktiviert).
2. Nicht ganz so einfach. Entweder den Browser über COM fernsteuern, oder mit FindWindowEx und co den entsprechenden Button suchen.
3. Wie 2., nur mit Edit statt Button.

Das sind jetzt zwar nur Anregungen, aber im Zweifel solltest du das als Suchbegriffe verwenden können.

Vielen Dank für deine rasche Antwort, nur leider komm ich damit nicht wirklich weiter =(
Ich bin ein totaler Anfänger in der Delphi Programmierung, also habe noch nicht so viel Ahnung...

Aurelius 10. Okt 2007 10:55

Re: FireFox im hintergrund öffnen und link kopieren
 
DAnn nutze die Hilfe mit den von Ghost vorgeschlagenen Suchbegriffen. Hier findest du bestimmt was :thumb:

marabu 10. Okt 2007 12:42

Re: FireFox im hintergrund öffnen und link kopieren
 
Hallo,

warum soll denn ein Browser gestartet werden? Der Browser ist in erster Linie für das Rendern einer HTML-Seite zuständig, alles andere kann in der Regel auch mit einer reinen HTTP-Komponente erledigt werden - insbesondere wenn das Browser-Fenster auf dem Desktop sowieso unerwünscht ist.

Ich würde die Seite im Browser anfordern und den Quelltext untersuchen, damit ich erfahre wie der Button zu adressieren ist. Beim Anfordern der Seite erfahre ich auch, ob ich mich um ein Session-Cookie kümmern muss, ob JavaScript mit im Spiel ist und welche hidden input fields eventuell zurück geschickt werden müssen.

Grüße vom marabu

0NyX 10. Okt 2007 13:04

Re: FireFox im hintergrund öffnen und link kopieren
 
Zitat:

Zitat von marabu
Hallo,

warum soll denn ein Browser gestartet werden? Der Browser ist in erster Linie für das Rendern einer HTML-Seite zuständig, alles andere kann in der Regel auch mit einer reinen HTTP-Komponente erledigt werden - insbesondere wenn das Browser-Fenster auf dem Desktop sowieso unerwünscht ist.

Ich würde die Seite im Browser anfordern und den Quelltext untersuchen, damit ich erfahre wie der Button zu adressieren ist. Beim Anfordern der Seite erfahre ich auch, ob ich mich um ein Session-Cookie kümmern muss, ob JavaScript mit im Spiel ist und welche hidden input fields eventuell zurück geschickt werden müssen.

Grüße vom marabu

Vielen Dank für die Antwort :-)

Ich dachte es geht nur so wenn ich den Browser öffne, wenn es anders geht ist es ja perfekt... =)

Ich hatte eben den Quelltext der Seite durchsucht aber der Butten ist sehr komisch verlinkt
Delphi-Quellcode:
 <input type="Button" onclick="launchDownloadURL('%31%63%62%39%31%37%61%64%31%65%30%62%65%61%61%39', '0')" value="Download" />
aber wenn man drauf klickt erscheint in der Adressenzeile die richtige URL!

Vielen Dank für eure Hilfe!

marabu 10. Okt 2007 14:36

Re: FireFox im hintergrund öffnen und link kopieren
 
Beim Klick auf den Button wird eine JavaScript-Funktion ausgeführt. Diese hat zwei Parameter, wovon der erste ein percent encoded hex string ist (%31 = #$31 = '1'). Die Funktion launchDownloadURL() solltest du im Quelltext der Seite (direkt oder referenziert) finden. In dieser Funktion wird aus den Parametern wahrscheinlich der endgültige URL gebaut. Diese JavaScript-Funktion musst du in Delphi nachbauen.

0NyX 16. Okt 2007 14:44

Re: FireFox im hintergrund öffnen und link kopieren
 
Vielen Dank für eure schnelle und gute Hilfe, hab es länger versucht aber nicht hin bekommen, da ich auch die Anweisung launchDownloadURL nicht gefunden habe. Ich danke euch trotzdem nochmal vielmals hab dadurch auf jeden fall was dazu gelernt!

marabu 16. Okt 2007 16:07

Re: FireFox im hintergrund öffnen und link kopieren
 
Hallo,

wer wird denn gleich aufgeben?

Delphi-Quellcode:
unit DemoFrm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, SHDocVw, StdCtrls;

type
  TDemoForm = class(TForm)
    Button: TButton;
    procedure ButtonClick(Sender: TObject);
    procedure BeforeNavigate2(Sender: TObject;
      const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
      Headers: OleVariant; var Cancel: WordBool);
  private
    ActiveUrl: string;
  end;

var
  DemoForm: TDemoForm;

implementation

{$R *.dfm}

uses
  MSHTML;

procedure TDemoForm.ButtonClick(Sender: TObject);
const
  url = 'http://www.google.de';
var
  wb: TWebBrowser;
  body, doc, frm: OleVariant;
begin
  wb := TWebBrowser.Create(nil);
  wb.ParentWindow := HWND(HWND_MESSAGE);
  wb.OnBeforeNavigate2 := BeforeNavigate2;
  wb.Navigate(url);
  repeat
    Sleep(50);
    Application.ProcessMessages;
  until wb.ReadyState >= READYSTATE_COMPLETE;
  doc := wb.OleObject.Document;
  body := doc.body;
  frm := doc.Forms.Item(0);
  frm.Elements.Item('q').Value := 'onyx';
  frm.Elements.Item('btnG').Click;
  repeat
    Sleep(50);
    Application.ProcessMessages;
  until wb.ReadyState >= READYSTATE_COMPLETE;
  wb.Free;
  ShowMessage(StringReplace(ActiveUrl, '&', '&&', [rfReplaceAll]));
end;

procedure TDemoForm.BeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
begin
  with Sender as TWebBrowser do
    if pDisp = DefaultInterface then
      ActiveUrl := URL;
end;

end.
Freundliche Grüße

0NyX 16. Okt 2007 18:04

Re: FireFox im hintergrund öffnen und link kopieren
 
Na ja ich dachte halt, lassen wir es besser erstmal und machen es später nochmal, da ich ja ein Delphi Anfänger bin...

Achja, wofür ist der von dir gepostete Quelltext gut? :oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:17 Uhr.
Seite 1 von 2  1 2      

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