PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Visual Basic relative Pfade


Gast
2009-09-20, 17:38:35
Guten Tag
Ich habe noch nicht sehr viel erfahrung mit VB und möchte gerne eine mini-webseite in einem kleinen Fenster darstellen.
Die Webseite befindet sich im selben Verzeichniss wie die .exe und ich möchte das die seite per Button in dem Fenster startet.
Das Design steht schon(damit mein ich das der Button und das Webbrowserfenster schon integriert sind).
Ich brauch also nur noch die Funktion, mit der man per Button die lokale URL in den Webbrowser einfügt.
Ich dachte da an sowas wie, die relative-Pfadangabe der html-datei in eine absolute umwandeln und dann als url in den Webbrowser schreiben.

Monger
2009-09-20, 18:00:12
Ich brauch also nur noch die Funktion, mit der man per Button die lokale URL in den Webbrowser einfügt.

Pfadangaben sind normalerweise grundsätzlich relativ zum aktuellen
Arbeitsverzeichnis - theoretisch müsste also schon ein "WebBrowser1.navigate("index.html")" reichen.

Wenn er das nicht versteht: die URI Klasse kann genau das. Da packst du einfach den Pfad deiner Datei rein, und dann kannst du dort u.a. den Absolutpfad ermitteln.

Gast
2009-09-20, 18:39:30
Ich will das so, dass ich den Ordner per E-MAIL an Dritte senden kann.
das mit dem WebBrowser1.navigate("index.html")
hat leider nicht gefunzt.

Gast
2009-09-20, 19:13:41
Kannst du mir das mit den Uri Klassen erklären?

Monger
2009-09-20, 20:42:18
Ich will das so, dass ich den Ordner per E-MAIL an Dritte senden kann.
das mit dem WebBrowser1.navigate("index.html")
hat leider nicht gefunzt.
Ja, Moment... was willst du konkret machen? Willst du in deinem Webbrowser eine bestimmte Seite aufrufen, oder willst du einen bestimmten Inhalt per Mail verschicken?

Kannst du mir das mit den Uri Klassen erklären?
Nehmen wir mal an, eine Index.html liegt in deinem aktuellen Arbeitsverzeichnis. Dann konstruierst du dir erstmal ein URI Objekt, und holst dir über dessen Methoden die Informationen die du brauchst. Zum Beispiel:

Dim Pfad as new Uri("index.html")
Dim AbsolutPfad as String = Pfad.AbsolutePath

Kinman
2009-09-20, 20:54:43
Zumindest bei VB60 klappt auch App.Path
das liefert den Pfad des Programms zurück

Monger
2009-09-20, 21:01:15
Zumindest bei VB60 klappt auch App.Path
das liefert den Pfad des Programms zurück
Gibts in VB.NET selbstverständlich auch. Irgendwo im "My" Namespace... weiß aber grad aus dem Kopf nicht wo genau.

Gast
2009-09-20, 21:41:24
Um das Problem klarrer zu machen: -Ich hab ne mini-webseite erstellt (ein Hintergrundbild, etwas Text und Javascript)
-Ich habe mit VB 2008 ein WinForms mit einem Button und den in VB 2008 enthaltenen Webbrowser (zufinden in der Toolbox) erstellt

Ich möchte den Button einen Befehl zuordnen, der mein "index.html" file mit dem Browserfenster öffnet.
Die .exe datei liegt dabei im selben Ordner wie die "index.html". Die exe soll die index html finden und öffnen. Mehr eigendlich nicht. Es soll nur ein kleines mini Programm werden mit dem ich den Javascript zeigen kann. Als absolute Pfadangabe funktioniert es z.B.WebBrowser1.Navigate("c:\webseite\index.html")
Ich möchte aber das es als relativer pfad auch geht damit man nicht an c:\ gebunden ist.

Monger
2009-09-20, 23:34:50
Dann ist meine Annahme wahrscheinlich falsch, dass er das Ausführungsverzeichnis als aktuelles Arbeitsverzeichnis nimmt. Dann musst du wohl oder übel dir doch den Pfad raussuchen.

Hab grad kein VB.NET zur Hand... aber gib doch mal "My." ein, und wurschtel dich mal durch die Intellisense. Da stößt du irgendwo auf den Assemblynamen, bzw. den Assemblyort.
Alternativ:

Dim ExePath as String = System.Windows.Forms.Application.ExecutablePath
Dim ExeDirectory as String = IO.Path.GetDirectoryName(ExePath)
Dim HtmlSiteFile as String = ExeDirectory & "\index.html"
WebBrowser1.Navigate(HtmlSiteFile)

Schau dir das aber mal beim Debuggen nochmal an, ob der Pfad wirklich stimmt. Bin nicht mehr ganz sicher, ob da jetzt schon hinten ein Backslash ist, oder nicht.

Gast
2009-09-21, 16:05:01
Jo thx 2 Monger

Dim ExePath as String = System.Windows.Forms.Application.ExecutablePath
Dim ExeDirectory as String = IO.Path.GetDirectoryName(ExePath)
Dim HtmlSiteFile as String = ExeDirectory & "\index.html"
WebBrowser1.Navigate(HtmlSiteFile)


hat es voll gebracht. Klein aber fein genau so wollte ich es haben ;-)