![]() |
ShellExecute mit Anchor nicht mit IE7
Hallo,
Ich benutze shellexecute mit Anchor um direkt in eine HTML-Dokumentation zu springen. Was immer funktioniert hat, geht jetzt nicht mehr. Entweder das IE7 Update oder ein XP-Update müssen das verursacht haben. Hier eine Demo:
Delphi-Quellcode:
Funktioniert auf einem WIN2K mit IE6 wie immer, aber auf XP SP2 mit IE7 kommt nur die URL ohne '#setq'.
unit Test2;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ShellAPI, Registry, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); var ts : string; urlname : string; begin with TRegistry.Create do try rootkey := HKEY_CLASSES_ROOT; OpenKey('\htmlfile\shell\open\command', False); try ts := ReadString(''); except ts := ''; end; CloseKey; finally Free; end; if ts <> '' then Begin ts := Copy(ts, Pos('"', ts) + 1, Length(ts)); ts := Copy(ts, 1, Pos('"', ts) - 1); urlname := 'file://c:\Programme\newLISP\newlisp_manual.html#setq'; ShellExecute(0, 'open', PChar(ts), PChar(urlname), nil, SW_SHOW); End; end; end. Manuell kann ich '#setq' dahinter tippen und dann komme ich auch zum Kommando. Aber wer trennt der Anchor-String ab? Irgend eine Erklärung? |
Re: ShellExecute mit Anchor nicht mit IE7
Ich habe das eben bei mir auch ausprobiert mit dem selben Effekt. Danach mit FireFox und der kann das auch nicht, aber der Anchor-String wird nicht weggelassen, dafür umgewandelt und zwar in diesem Format:
file:///c:/test.html%23setq IE7 scheint zu erkennen, dass es sich nicht um ein Anchor handelt und lässt vermutlich den hinter der Datei angegebenen String weg. Vielleicht hilft dir dieser Ansatz. [EDIT] Da dieser String hier als Link angezeigt wird, habe ich einfach mal auf die Eigenschaften geklickt, dort wird der String aber richtig erkannt. Merwürdiges Verhalten. [/EDIT] Gruß Mazel |
Re: ShellExecute mit Anchor nicht mit IE7
Danke für den Tip.
>IE7 scheint zu erkennen, dass es sich nicht um ein Anchor handelt und lässt vermutlich den hinter der Datei angegebenen String weg. Es handelt sich aber um eine Anchor. Und dies hat vor IE7 immer funktioniert. :cry: |
Re: ShellExecute mit Anchor nicht mit IE7
Ich würde mich da, beim Programieren, nicht auf einen Browser festlegen. Am besten den
Standardbrowser verwenden. Versuch es einfach mal so:
Delphi-Quellcode:
#setq ist eine Textmarke ?
function LaunshStdBrowserWithURL(URL: String): BOOL;
begin Result := FALSE; if URL <> '' then begin Result := (ShellExecute( Application.Handle, 'open', PChar(URL), nil, nil, SW_SHOWNORMAL) >= 32); end; end; procedure TForm1.Button1Click(Sender: TObject); const MyURL = '"file://c:\Programme\newLISP\newlisp_manual.html#setq"'; begin if not LaunshStdBrowserWithURL(MyURL) then ShowMessage('Sorry, Der Browser konnte nicht mit der URL starten...'); end |
Re: ShellExecute mit Anchor nicht mit IE7
Deim code startet den browser nur wenn ich die Double quotes bei der URL wegmache
Delphi-Quellcode:
Aber der Anchor wird trotzdem vom IE7 weggelassen!
procedure TForm1.Button1Click(Sender: TObject);
const MyURL = 'file://c:\Programme\newLISP\newlisp_manual.html#setq'; begin if not LaunshStdBrowserWithURL(MyURL) then ShowMessage('Sorry, Der Browser konnte nicht mit der URL starten...'); end Zitat:
Zitat:
<a NAME="setq"></a> Und wenn ich im gestarteten IE7 das '#setq' in der URL von Hand wieder ergänze springt der IE7 auch brav zur Dokumentation des Schlüsselworts! |
Re: ShellExecute mit Anchor nicht mit IE7
Zitat:
FF der akt. Standardbrowser ist. :gruebel: Bei SchellExecute reicht eigentlich das "open" - Kommando um eine HTM/HTML-Datei zu "starten". Ich denke mal das das Probl. beim IE7 liegt, beim IE6.x und FF1.x und höher wird das Dokumet richtig mit der akt. Anchor - Position angezeigt. |
Re: ShellExecute mit Anchor nicht mit IE7
Zitat:
Zitat:
Gibt es eine Methode den IE7 von aussen so zu starten, das er einen Anchor anspringt. Dann müsste man nur noch erkennen welcher IE installiert ist und den workaround starten. Aber den muss man erst mal finden. |
Re: ShellExecute mit Anchor nicht mit IE7
Ein Delphi Kollege von DelphiArea hat mir eine Tip gegeben:
Zitat:
Aber leider funktioniert das dann nicht mit IE6. Da wird mal wohl einen Versions-Check machen müssen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 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