AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

ShellExecute mit Anchor nicht mit IE7

Ein Thema von HPW · begonnen am 15. Mär 2007 · letzter Beitrag vom 19. Mär 2007
Antwort Antwort
HPW

Registriert seit: 28. Feb 2003
160 Beiträge
 
Delphi 7 Professional
 
#1

ShellExecute mit Anchor nicht mit IE7

  Alt 15. Mär 2007, 13:51
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:
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.
Funktioniert auf einem WIN2K mit IE6 wie immer, aber auf XP SP2 mit IE7 kommt nur die URL ohne '#setq'.
Manuell kann ich '#setq' dahinter tippen und dann komme ich auch zum Kommando.
Aber wer trennt der Anchor-String ab?

Irgend eine Erklärung?
Hans-Peter
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#2

Re: ShellExecute mit Anchor nicht mit IE7

  Alt 15. Mär 2007, 14:45
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
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
HPW

Registriert seit: 28. Feb 2003
160 Beiträge
 
Delphi 7 Professional
 
#3

Re: ShellExecute mit Anchor nicht mit IE7

  Alt 15. Mär 2007, 21:47
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.

Hans-Peter
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#4

Re: ShellExecute mit Anchor nicht mit IE7

  Alt 16. Mär 2007, 07:09
Ich würde mich da, beim Programieren, nicht auf einen Browser festlegen. Am besten den
Standardbrowser verwenden.

Versuch es einfach mal so:

Delphi-Quellcode:
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
#setq ist eine Textmarke ?
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
HPW

Registriert seit: 28. Feb 2003
160 Beiträge
 
Delphi 7 Professional
 
#5

Re: ShellExecute mit Anchor nicht mit IE7

  Alt 17. Mär 2007, 07:38
Deim code startet den browser nur wenn ich die Double quotes bei der URL wegmache

Delphi-Quellcode:
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
Aber der Anchor wird trotzdem vom IE7 weggelassen!

Zitat:
Ich würde mich da, beim Programieren, nicht auf einen Browser festlegen. Am besten den
Standardbrowser verwenden.
Hab ich doch gar nicht. Der Browser wird doch aus der Registry gelesen.

Zitat:
#setq ist eine Textmarke ?
Ja.

<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!
Hans-Peter
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#6

Re: ShellExecute mit Anchor nicht mit IE7

  Alt 17. Mär 2007, 08:35
Zitat:
Hab ich doch gar nicht. Der Browser wird doch aus der Registry gelesen.
Äh, unter HKEY_CLASSES_ROOT\htmlfile\shell\open\command ist bei mir der IE eingetragen obwohl der
FF der akt. Standardbrowser ist.

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.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
HPW

Registriert seit: 28. Feb 2003
160 Beiträge
 
Delphi 7 Professional
 
#7

Re: ShellExecute mit Anchor nicht mit IE7

  Alt 17. Mär 2007, 09:13
Zitat:
Äh, unter HKEY_CLASSES_ROOT\htmlfile\shell\open\command ist bei mir der IE eingetragen obwohl der
FF der akt. Standardbrowser ist.
Oops, kann schon sein das ich damit nur den IE finde.

Zitat:
Ich denke mal das das Probl. beim IE7 liegt, ..
Da ist ja nun das Problem.
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.
Hans-Peter
  Mit Zitat antworten Zitat
HPW

Registriert seit: 28. Feb 2003
160 Beiträge
 
Delphi 7 Professional
 
#8

Re: ShellExecute mit Anchor nicht mit IE7

  Alt 19. Mär 2007, 11:55
Ein Delphi Kollege von DelphiArea hat mir eine Tip gegeben:

Zitat:
A workaround can be using a url shortcut.
Create a temporary file with ".url" extension and pass it to ShellExecute.
The content of the file is something like this:

Delphi-Quellcode:
[InternetShortcut]
URL=file:///c:/Programme/newLISP/newlisp_manual.html#setq
Mit Doppelklick auf diese URL-Datei funktioniert dann der IE7.
Aber leider funktioniert das dann nicht mit IE6.
Da wird mal wohl einen Versions-Check machen müssen.
Hans-Peter
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:34 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