Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi ShellExecute, html-seite in einem NEUEN fenster öffnen? (https://www.delphipraxis.net/42079-shellexecute-html-seite-einem-neuen-fenster-oeffnen.html)

watwerbistdudenn 13. Mär 2005 12:01


ShellExecute, html-seite in einem NEUEN fenster öffnen?
 
hi,
ich versuch eine seite mittels ShellExecute(0, 'open', 'http://www.xyz.de', nil, nil, SW_SHOW);
in einem neuen fenster zu öffnen.
wenn aber schon ein browserfenster geöffnet ist wird dieses fenster genommen und die siete darin geladen.
Ich will aber das ein neues fenster geöffnet wird.

kann mir bitte jemand helfen!
danke ralf

SirThornberry 13. Mär 2005 12:05

Re: ShellExecute, html-seite in einem NEUEN fenster öffnen?
 
wirst du mit Shellexecute alleine nicht hinn bekommen. Folgende Funktion sollte das machen was du willst:
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;

watwerbistdudenn 13. Mär 2005 12:17

Re: ShellExecute, html-seite in einem NEUEN fenster öffnen?
 
WOW das ging aber schnell!!!!!!!!!!!
ich wollt grad den thread löschen weil ich im forum die lösung gefunden habe


ShellExecute(0, 'Open',PChar('IEXPLORE.EXE'),'http://web.de', nil, SW_ShowNormal);

damit gehts wenn man halt den iexplorer beutzt und mir langt das.

Aber vielen vielen dank für die schnelle antwort!!

ralf

SirThornberry 13. Mär 2005 20:12

Re: ShellExecute, html-seite in einem NEUEN fenster öffnen?
 
Genau, wenn man den ie nutzt geht deine Variante, die Variante die ich gepostet hab sucht aus der Registry den Standardbrowser heraus und macht dann das gleiche

Airblader 13. Mär 2005 20:27

Re: ShellExecute, html-seite in einem NEUEN fenster öffnen?
 
Hatte selbiges Problem und hab das gefunden :)

Delphi-Quellcode:
ShellExecute(handle, 'open', PChar('about:blank'), nil, nil, sw_Show);

ShellExeCute(handle, 'open', PChar('deineadresse'), nil, nil, sw_Show);
Funzt bei mir optimal

air

SirThornberry 13. Mär 2005 20:31

Re: ShellExecute, html-seite in einem NEUEN fenster öffnen?
 
@Airblader: Deine variante ist ja die aus dem Ausgangspost. Und wenn ich deine Variante ausführe wird durch about:blank bei mir eine leeres IE-Fenster geöffnet, und durch die zweite anweisung wird dann die webseite in meinem Standardbrowser geöffnet. Das heißt ich hab ein offenes ie-fenster mit leerer seite

Airblader 13. Mär 2005 20:49

Re: ShellExecute, html-seite in einem NEUEN fenster öffnen?
 
Zitat:

Zitat von SirThornberry
@Airblader: Deine variante ist ja die aus dem Ausgangspost. Und wenn ich deine Variante ausführe wird durch about:blank bei mir eine leeres IE-Fenster geöffnet, und durch die zweite anweisung wird dann die webseite in meinem Standardbrowser geöffnet. Das heißt ich hab ein offenes ie-fenster mit leerer seite

Stimmt...Eine Bekannte bestätigt :D

air
edit: Dein Code geht aber auch nicht...er kennt PosExt nicht?

SirThornberry 13. Mär 2005 22:14

Re: ShellExecute, html-seite in einem NEUEN fenster öffnen?
 
@Airblader: PosEx gibt es seit Delphi6 oder Delphi7 erst. Daher hab ich eine eigene Funktion noch gebaut:
Delphi-Quellcode:
function PosExt(const SubStr, S: string; Offset: Cardinal = 1): Integer;
var
  I,X: Integer;
  Len, LenSubStr: Integer;
begin
  if Offset = 1 then
    Result := Pos(SubStr, S)
  else
  begin
    I := Offset;
    LenSubStr := Length(SubStr);
    Len := Length(S) - LenSubStr + 1;
    while I <= Len do
    begin
      if S[I] = SubStr[1] then
      begin
        X := 1;
        while (X < LenSubStr) and (S[I + X] = SubStr[X + 1]) do
          Inc(X);
        if (X = LenSubStr) then
        begin
          Result := I;
          exit;
        end;
      end;
      Inc(I);
    end;
    Result := 0;
  end;
end;
man kann natürlich auch wenn man delphi6 oder höher besitzt aus dem "posext" einfach ein "posex" machen

Airblader 14. Mär 2005 05:04

Re: ShellExecute, html-seite in einem NEUEN fenster öffnen?
 
Seltsam, ich hab D6 aber PosEx kennt er auch nicht.

dann übernehm ich mal deine funktion ;)

air

malo 14. Mär 2005 05:07

Re: ShellExecute, html-seite in einem NEUEN fenster öffnen?
 
Zitat:

Zitat von Airblader
Seltsam, ich hab D6 aber PosEx kennt er auch nicht
air

Einfach mal in die OH schauen, welche Unit gebraucht wird. In diesem Falle StrUtils :ziwnker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:43 Uhr.
Seite 1 von 2  1 2      

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