Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi mit ShellExecute Browser öffnen (https://www.delphipraxis.net/33594-mit-shellexecute-browser-oeffnen.html)

PiT123 9. Nov 2004 17:37


mit ShellExecute Browser öffnen
 
Hallo,

ich versuche mit

Delphi-Quellcode:
StrPCopy(TMP1, Edit3.Text);
ShellExecute(1,NIL,TMP1,NIL,NIL,SW_ShowNormal);
die URL aus Edit3 in einem Browser zu öffen, nur wir wenn schon offen der geöffnete Browser benutzt.
Ich möchte aber das ein neuse Browser-Fenster geöffnet wird.


Danke
PiT

fkerber 9. Nov 2004 17:39

Re: mit ShellExecute Browser öffnen
 
Hi!

Das hatten wir schonmal (der Thread war von mir oder ich habe zumindest darin gepostet)
Es gibt einen Option open_new, diese funktioniert allerdings nur im IE und ist deshalb nicht sonderlich ratsam.


Ciao Frederic

mirage228 9. Nov 2004 17:43

Re: mit ShellExecute Browser öffnen
 
Hi,

versuche es mal hiermit:
Delphi-Quellcode:
uses Registry, Windows, ShellAPI;

function GetDefaultBrowser: String;
var
  Browser: string;
begin
  Browser := '';
  with TRegistry.Create(KEY_READ) do
  try
    RootKey := HKEY_CLASSES_ROOT;
    Access := KEY_QUERY_VALUE;
    if OpenKey('\http\shell\open\command', False) then
      Browser := ReadString('') ;
    CloseKey;
  finally
    Free;
  end;
  if Browser <> '' then
  begin
    Browser := Copy(Browser, Pos('"', Browser) + 1, Length(Browser)) ;
    Browser := Copy(Browser, 1, Pos('"', Browser) - 1) ;
  end;
  Result := Browser;
end;

function NavigateTo(const aURL: String): Integer;
var
  DefaultBrowser: String;
begin
  DefaultBrowser := GetDefaultBrowser;
  if (DefaultBrowser <> '') then
    Result := ShellExecute(0, 'open', PChar(DefaultBrowser),
      PChar(aURL), nil, SW_SHOWNORMAL) else
  Result := ShellExecute(0, 'open', PChar(aURL),
      nil, nil, SW_SHOWNORMAL);
end;
mfG
mirage228

SirThornberry 9. Nov 2004 18:26

Re: mit ShellExecute Browser öffnen
 
ich benutz dafür im allgemeinen folgende funktion (welche vermutlich nix anderes macht als die von meinem vorposter (nicht angeguckt, nur überflogen und für ziemlich lang empfunden))
Delphi-Quellcode:
procedure OpenHttpSite(AURL: String);
var LRegistry: TRegistry;
    LBrowser: String;
    LStart, LEnd: Integer;
begin
  LRegistry := TRegistry.Create(KEY_READ);
  try
    LRegistry.RootKey := HKEY_CLASSES_ROOT;
    if LRegistry.OpenKey('http\shell\open\command', false) then
    begin
      LBrowser := LRegistry.ReadString('');
      if pos('"', LBrowser) > 0 then
      begin
        LStart := pos('"', LBrowser);
        LEnd := PosExt('"', LBrowser, LStart + 1);
        if LEnd > 0 then
           LBrowser := copy(LBrowser, LStart + 1, LEnd - (LStart + 1));
      end;
      LRegistry.CloseKey;
    end;
  finally
    LRegistry.Free;
  end;
  if ShellExecute(0, 'open', PChar(LBrowser), PChar(AUrl), nil, SW_SHOW) <= 32 then
     ShellExecute(0, 'open', PChar(AUrl), nil, nil, SW_SHOW)
end;


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