Wie lokale HTML-Datei mit Hash im Standard-Browser öffnen?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8820
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Wie lokale HTML-Datei mit Hash im Standard-Browser öffnen?

Beitrag von NicTheQuick »

Hallo Leute,

es ist ja bekannt, dass man beliebige URLs ganz einfach per RunProgram im Standardbrowser öffnen kann:

Code: Alles auswählen

RunProgram("http://www.purebasic.fr/german/viewtopic.php?p=333782#p333782")
Leider scheint das nicht mit lokalen HTML-Dateien zu funktionieren.

Code: Alles auswählen

RunProgram("file://C:\Users\Nicolas\Documents\Purebasic\testhash.html#bla")
Dabei enthält "testhash.html" folgendes:

Code: Alles auswählen

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <script type="text/javascript">
        (function () {
            "use strict";
             function go() {
                alert(window.location.hash.substr(1));
            }
            window.onload = go;
        })();
    </script>
    <title>Hash-Test</title>
</head>
<body></body>
</html>
Öffnet man einen leeren Tab im Browser und öffnet "file:///C:/Users/Nicolas/Documents/Purebasic/testhash.html#bla", erscheint ein 'alert()' mit dem Inhalt "bla". 'RunProgram()' sollte eigentlich das selbe machen, tut es aber nicht. Irgendjemand eine Idee?
Aktuell brauche ich das vorwiegend für Windows und es sollte mit allen gängigen Browsern gleich gut funktionieren. Für Linux werden ich selbst eine Lösung finden, falls es das Problem dort auch gibt.
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Wie lokale HTML-Datei mit Hash im Standard-Browser öffne

Beitrag von Nino »

Hallo,

der folgende Code funktioniert hier, d.h. es erscheint ein 'alert()' mit dem Inhalt "bla"
(Windows 10, PB 5.40, Firefox 42.0):

Code: Alles auswählen

prog$ = "firefox"
RunProgram(prog$, "file:///C:/Users/Nino/Desktop/testhash.html#bla", "")
Ich weiß, das ist noch nicht ganz das was Du willst. Aber evtl. kannst Du die erste Zeile ersetzen durch sowas wie

Code: Alles auswählen

prog$ = FindAssociatedProgram("C:/Users/Nino/Desktop/testhash.html")
s. http://www.purebasic.fr/german/viewtopi ... 92#p282092
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8820
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Wie lokale HTML-Datei mit Hash im Standard-Browser öffne

Beitrag von NicTheQuick »

Ja, das ist schon mal gut. Interessant wäre jetzt noch herausfinden zu können, welches Programm für das HTTP-Protokoll zuständig ist.
So funktioniert es schonmal nicht.

Code: Alles auswählen

Debug FindAssociatedProgram("http://google.de")
Das heißt die Funktion orientiert sich tatsächlich nur an der Dateiendung, nicht am Protokoll. Es ist zwar unwahrscheinlich, dass für HTML und HTTP unterschiedliche Programme eingestellt sind, aber man weiß ja nie so genau. ;)
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Wie lokale HTML-Datei mit Hash im Standard-Browser öffne

Beitrag von RSBasic »

Dann musst du das auslesen: HKEY_CLASSES_ROOT\http\shell\open\command\
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
chi
Beiträge: 90
Registriert: 17.05.2007 09:30
Wohnort: Austria

Re: Wie lokale HTML-Datei mit Hash im Standard-Browser öffne

Beitrag von chi »

Code: Alles auswählen

#ASSOCSTR_COMMAND  = $1
#ASSOCF_ISPROTOCOL = $1000;

pcchOut = #MAX_PATH
pszOut$ = Space(pcchOut)

If AssocQueryString_(#ASSOCF_ISPROTOCOL, #ASSOCSTR_COMMAND, @".html", @"open", @pszOut$, @pcchOut) = #S_OK
	RunProgram(ReplaceString(pszOut$, "%1", "file:///C:/Users/Nicolas/Documents/Purebasic/testhash.html#bla"))
EndIf
Derren
Beiträge: 558
Registriert: 23.07.2011 02:08

Re: Wie lokale HTML-Datei mit Hash im Standard-Browser öffne

Beitrag von Derren »

Das ist kein Hash. Das ist ein Anker. Wenn du das Symbol meinst, dann wäre das Raute, oder (Doppel-)kreuz.
Könnte vielleicht zu Verwirrung führen, bei Leuten die das Wort Hash nicht nur von Twitter kennen. :)
Signatur und so
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8820
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Wie lokale HTML-Datei mit Hash im Standard-Browser öffne

Beitrag von NicTheQuick »

Im Englischen nennt man es oft Hash Mark, siehe auch Wiki. Im deutschen spricht man eher von einem Anker, das stimmt. Nichsdestotrotz greift man in Javascript über 'window.location.hash' drauf zu. Hauptsächlich deswegen rede ich dauernd von Hash. ;)
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Wie lokale HTML-Datei mit Hash im Standard-Browser öffne

Beitrag von Nino »

Derren hat geschrieben:Das ist kein Hash. Das ist ein Anker.
Nein, das ist kein Anker.
Ein Anker ist ein Sprungziel innerhalb eines HTML-Dokuments.
Mit Hilfe des Zeichens # kann man Hyperlinks konstruieren, die auf Anker verweisen.
Das Zeichen selbst heißt übrigens "Gartenzaun" *. :D

* spätestens seit "MS-DOS mühelos"
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8820
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Wie lokale HTML-Datei mit Hash im Standard-Browser öffne

Beitrag von NicTheQuick »

Ist ja jetzt auch egal. Zurück zum Thema bitte.
Antworten