Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi URL öffnen Link abfangen... (https://www.delphipraxis.net/159421-url-oeffnen-link-abfangen.html)

delphinia 27. Mär 2011 13:03

Delphi-Version: 5

URL öffnen Link abfangen...
 
Hallo,

sorry habe keinen besseren Titel gefunden.

Mein Problem: Wenn ich zB in einem Programm die infos aufrufen sind meist dort ja auch die URLs zu den Homepage der Hersteller klickfähig aufzurufen. klicke ich auf so einen Link bekomme ich in meinem Browser nicht die URL versuchte diese mit ParamStr() abzufangen geht aber nicht warum? Bekomme dir URL nicht...

rollstuhlfahrer 27. Mär 2011 13:12

AW: URL öffnen Link abfangen...
 
Bitte was hast du versucht?

Das Aufrufen sollte normalerweise mit Hilfe von Delphi-Referenz durchsuchenShellExecute erfolgen. Der Browser kann dann entweder per Aufruf eines neuen Prozesses davon benachrichtigt werden, aber es sollte auch die Möglichkeit geben, dass der Browser per DDE o.Ä. benachrichtigt wird.

Da Firefox diesen "Info-Prozess" sofort wieder schließt, nachdem die Daten an den Hauptprozess übertragen worden sind, bleibt "nichts" zurück. Du hast jetzt 2 Möglichkeiten:

a) Registriere dein Programm als Handler für http-Links oder
b) lasse dich über das Erstellen eines jeden neuen Prozesses informieren und lese dann sofort dessen Kommandozeile/Parameter aus.

Was ParamStr() damit zu tun hat, musst du noch erklären.

Bernhard

delphinia 27. Mär 2011 13:16

AW: URL öffnen Link abfangen...
 
Es geht hier nicht um einen Browser wie FF oder IE etc.


habe ein Programm geschrieben das ich dann firefox.exe genannte habe und damit in das Firefox verzeichnis kopierte - somit ist das registireren (Registriere dein Programm als Handler für http-Links oder) sicher Überflüssig?!

Ich möchte nun wenn ich egal wo ich in Windows einen Link anklicke und zwangläufig ja mein Programm gestartet wird das ich dann die URL angezeigt bekomme um dann mit dieser weiter zu arbeitem und ich dachte die URL würde an die EXE per parameter uebergeben daher die Idee ParamStr

himitsu 27. Mär 2011 13:28

AW: URL öffnen Link abfangen...
 
Zitat:

Zitat von delphinia (Beitrag 1091316)
habe ein Programm geschrieben das ich dann firefox.exe genannte habe und damit in das Firefox verzeichnis kopierte - somit ist das registireren (Registriere dein Programm als Handler für http-Links oder) sicher Überflüssig?!

Selber Shuld ... sowas mach man nicht und sei froh, daß da dein Virenscanner nicht einschreitet.


Firefox registriert sich eventuell einen COM-Handler, welcher diese Ereignisse empfängt ... da kommt dann also nix als Parameter an.

Namenloser 27. Mär 2011 14:58

AW: URL öffnen Link abfangen...
 
So macht man es richtig: Eigenes Protokoll registrieren

delphinia 27. Mär 2011 15:04

AW: URL öffnen Link abfangen...
 
Es geht hier nicht um richtig und falsch und um Virenscanner die sich melden oder nicht. Auch nicht um eigene Protokolle und schon gar nicht darum!

Einfach und ergreifend wie ich eine URL bekomme..
Noch einmal ein Beispiel: in einem E-Mail Programm X habe ich eine E-mail in der ein Link vorhanden isst. Klicke ich drauf öffnet sich Browser Y.

Soweit gut...

habe nun Browser Y unbenannt und durch meine EXE ersetzt und will nun aus dieser die URL die vorher in Browser Y dafür sorgte das a) der Browser gestartet und b) auch mit dieser URL fertig angezeigt wurde....

Ich dachte oder nahm an das dies - da in der Reg ja steht Pfad/brwoserY.exe %1 das es über die ParamStr passiert! Aber leider ist das nicht der Fall.

Namenloser 27. Mär 2011 15:13

AW: URL öffnen Link abfangen...
 
Zitat:

Zitat von delphinia (Beitrag 1091338)
Es geht hier nicht um richtig und falsch und um Virenscanner die sich melden oder nicht. Auch nicht um eigene Protokolle und schon gar nicht darum!

Wieso? Du kannst die verlinkte Funktion nutzen, um ganz einfach und sauber „HTTP“ zu registrieren.

himitsu 27. Mär 2011 15:21

AW: URL öffnen Link abfangen...
 
[delete]

BUG 27. Mär 2011 15:49

AW: URL öffnen Link abfangen...
 
Ich habe das jetzt mal ausprobiert :mrgreen:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
begin
  memo1.Clear;
  for i := 0 to Paramcount-1 do memo1.lines.add(ParamStr(i));
end;
Liefert:
Code:
C:\Program Files (x86)\Mozilla Firefox\firefox.exe
-requestPending
-osint
-url
Richtig wäre:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
begin
  memo1.Clear;
  for i := 0 to Paramcount do memo1.lines.add(ParamStr(i));
end;
Ergebnis:
Code:
C:\Program Files (x86)\Mozilla Firefox\firefox.exe
-requestPending
-osint
-url
http://delphipraxis.net
Delphi-Referenz durchsuchenParamCount zählt anscheinend den Anwendungspfad nicht mit.

DeddyH 27. Mär 2011 16:15

AW: URL öffnen Link abfangen...
 
Richtig, ParamCount enthält nur die Anzahl der tatsächlich übergebenen Kommandozeilen-Parameter, da ParamStr(0) immer gesetzt ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:13 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