Einfach nur eine URL öffnen
-
- Beiträge: 80
- Registriert: Sa 11. Apr 2009, 17:01
- OS, Lazarus, FPC: Windoof (L 0.9.26 FPC 2.2.2)
- CPU-Target: 32Bit
Einfach nur eine URL öffnen
Ich habe jetzt das internet durchsucht, aber nichts hat funktioniert.
Wenn möglich Plattform unabhängig.
Irgendwelche Vorschläge?
Wenn möglich Plattform unabhängig.
Irgendwelche Vorschläge?
Dankt monta !!
Re: Einfach nur eine URL öffnen
hendy hat geschrieben:Ich habe jetzt das internet durchsucht, aber nichts hat funktioniert.
Wenn möglich Plattform unabhängig.
Irgendwelche Vorschläge?
Was meinst du damit? Lokal oder Internet?
Sry. hatte die Foren Kategorie nicht gelesen.
Vllt. das: http://curl.haxx.se/libcurl/pascal/
-
- Beiträge: 688
- Registriert: Mi 3. Okt 2007, 21:00
- OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
- CPU-Target: x86_64
Re: Einfach nur eine URL öffnen
hendy hat geschrieben:Ich habe jetzt das internet durchsucht, aber nichts hat funktioniert.
Wenn möglich Plattform unabhängig.
Irgendwelche Vorschläge?
Unter Linux geht folgendes:
Code: Alles auswählen
procedure OpenURL(url: String);
var p: TProcess;
begin
p:=TProcess.Create;
p.CommandLine:='xdg-open "'+url+'"';
p.Execute;
p.Free;
end;
Unter Windows gibt es ShellExecute, für MacOS fällt mir nichts ein.
Für eine "plattformunabhängige" Lösung kannst du ja mit Compilerswitches arbeiten.
-
- Beiträge: 440
- Registriert: So 10. Dez 2006, 14:59
- OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
- CPU-Target: 64Bit
- Kontaktdaten:
Re: Einfach nur eine URL öffnen
Nabend ^^
ich weiß nicht mehr von wo ich diese Unit her habe aber aufjedenfall nutze ich diese hier
MfG,
Eugen
ich weiß nicht mehr von wo ich diese Unit her habe aber aufjedenfall nutze ich diese hier
Code: Alles auswählen
unit OpenURLUtil;
interface
{$mode objfpc}{$h+}
// Using Win32Proc binds the unit to LCL
// to break the binding, check for Unicode Windows must be done manually
// CarbonProc CreateCFString should also be replaced with MacOSAll code
{$ifdef Windows}
uses ShellAPI, Win32Proc;
{$endif}
{$ifdef LINUX}
uses SysUtils;
{$endif}
{$ifdef Darwin} // LCLCarbon?
uses MacOSAll, CarbonProc;
{$endif}
function OpenURLWide(const URLWide: WideString): Boolean;
function OpenURLAnsi(const URLAnsi: AnsiString): Boolean;
function OpenURL(const URLUtf8: String): Boolean;
implementation
function OpenURLWide(const URLWide: WideString): Boolean;
begin
Result := OpenURL(UTF8Encode(URLWide));
end;
function OpenURLAnsi(const URLAnsi: AnsiString): Boolean;
begin
Result := OpenURL(AnsiToUtf8(URLAnsi));
end;
{$IFDEF WINDOWS}
function OpenURL(const URLUtf8: String): Boolean;
var
ws : WideString;
ans : AnsiString;
begin
Result := false;
if URLUtf8 = '' then Exit;
if UnicodeEnabledOS then begin
ws := UTF8Decode(URLUtf8);
Result := ShellExecuteW(0, 'open', PWideChar(ws), nil, nil, 0) > 32;
end else begin
ans := Utf8ToAnsi(URLUtf8); // utf8 must be converted to Windows Ansi-codepage
Result := ShellExecute(0, 'open', PAnsiChar(ans), nil, nil, 0) > 32;
end;
end;
{$ENDIF}
{$IFDEF LINUX}
function OpenURL(const URLUtf8: string): Boolean;
var
Helper: string;
begin
Result := True;
try
Helper := '';
if fpsystem('which xdg-open') = 0 then
Helper := 'xdg-open'
else if FileExists('/etc/alternatives/x-www-browser') then
Helper := '/etc/alternatives/x-www-browser'
else if fpsystem('which firefox') = 0 then
Helper := 'firefox'
else if fpsystem('which konqueror') = 0 then
Helper := 'konqueror'
else if fpsystem('which opera') = 0 then
Helper := 'opera'
else if fpsystem('which mozilla') = 0 then
Helper := 'mozilla';
if Helper <> '' then
fpSystem(Helper + ' ' + URLUtf8 + '&');
else
Result := False;
except
end;
end;
{$ENDIF}
{$IFDEF DARWIN}
function OpenURL(const URLUtf8: string): Boolean;
var
cf : CFStringRef;
url : CFURLRef;
begin
if URLUtf8 = '' then begin
Result := false;
Exit;
end;
CreateCFString(URLUtf8, cf);
url := CFURLCreateWithString(nil, cf, nil);
Result := LSOpenCFURLRef(url, nil) = 0;
CFRelease(url);
CFRelease(cf);
end;
{$ENDIF}
end.
MfG,
Eugen
-
- Beiträge: 957
- Registriert: Mo 11. Sep 2006, 22:56
Re: Einfach nur eine URL öffnen
Zuletzt geändert von creed steiger am So 10. Jan 2010, 02:12, insgesamt 1-mal geändert.
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2640
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Einfach nur eine URL öffnen
Mit der Unit LazHelpHTML kann man den Browser auf dem laufenden System finden.
Kleines Beispiel:
hth
Micha
Kleines Beispiel:
Code: Alles auswählen
procedure OpenUrl(Url: String);
var
HelpViewer: THTMLBrowserHelpViewer;
BrowserPath, BrowserParams: string;
BrowserProcess: TProcessUTF8;
begin
BrowserPath := EmptyStr;
BrowserParams := EmptyStr;
try
HelpViewer := THTMLBrowserHelpViewer.Create(nil);
HelpViewer.FindDefaultBrowser(BrowserPath,BrowserParams);
BrowserParams := SysUtils.StringReplace(BrowserParams, '%s', Url, [rfReplaceAll, rfIgnoreCase]);
try
BrowserProcess := TProcessUTF8.Create(nil);
BrowserProcess.CommandLine := BrowserPath + ' ' + BrowserParams;
BrowserProcess.Execute;
finally
FreeAndNil(BrowserProcess);
end;
finally
FreeAndNil(HelpViewer);
end;
end;
hth
Micha
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 957
- Registriert: Mo 11. Sep 2006, 22:56
Re: Einfach nur eine URL öffnen
mikescu hat geschrieben:Mit der Unit LazHelpHTML kann man den Browser auf dem laufenden System finden.
oder mit finddefaultbrowser
http://lazarus-ccr.sourceforge.net/docs ... owser.html
-
- Beiträge: 80
- Registriert: Sa 11. Apr 2009, 17:01
- OS, Lazarus, FPC: Windoof (L 0.9.26 FPC 2.2.2)
- CPU-Target: 32Bit
Re: Einfach nur eine URL öffnen
Ok danke für die Antworten, habe aber nur laz 9.28.2.
Ich mach das dann für windows.
Es hat jetzt funktioniert.
Ich mach das dann für windows.
Es hat jetzt funktioniert.
Code: Alles auswählen
uses windows,shellapi;
procedure xx;
begin
ShellExecute(Handle, 'open', 'http://www.google.com/',nil,nil, SW_SHOWNORMAL);
end;
Dankt monta !!
Re: Einfach nur eine URL öffnen
Das geht viel einfacher.
Erstmal oben unter uses "LCLIntf" hinzufügen.
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
ExtCtrls, LCLIntf;
Dann z.B. bei einem Button eingeben:
OpenUrl('DeineUrl').
procedure TForm1.Button1Click(Sender: TObject);
begin
OpenURL('http://www.youtube.com/user/finnglinkmovies')
end;
Wenn man nun auf den Knopf klickt, sucht sich das Programm einen installierten Browser aus und öffnet damit die URL.
Ich hoffe ich konnte helfen,
Finn Glink
P.S.:Funzt bei glaub ich allen Betriebssystemen/Plattformen
Erstmal oben unter uses "LCLIntf" hinzufügen.
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
ExtCtrls, LCLIntf;
Dann z.B. bei einem Button eingeben:
OpenUrl('DeineUrl').
procedure TForm1.Button1Click(Sender: TObject);
begin
OpenURL('http://www.youtube.com/user/finnglinkmovies')
end;
Wenn man nun auf den Knopf klickt, sucht sich das Programm einen installierten Browser aus und öffnet damit die URL.
Ich hoffe ich konnte helfen,
Finn Glink
P.S.:Funzt bei glaub ich allen Betriebssystemen/Plattformen
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2640
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Einfach nur eine URL öffnen
Modellman hat geschrieben:Das geht viel einfacher.
Heutzutage geht das so einfach. Aber als der die Frage vor fast drei Jahren (!) aufkam, gab es den von dir beschriebenen Weg noch nicht. Wieder einmal ein Beispiel dafür, wieviel besser und einfacher viele Funktionen von Lazarus und Freepascal geworden sind.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de