アプリ版:「スタンプのみでお礼する」機能のリリースについて

C#webBrowserでローカルにあるhtmlを相対パスで表示させたいです。
exeファイルと同じフォルダにtest.htmlを置いたとして、
webBrowser1.Navigate(@".\test.html")とすれば出来ると思ったんですが出来ません。
ご教授頂ければ助かります。

A 回答 (2件)

自分で 「exe ファイルと同じフォルダに置いてある」 とまでヒントを出しておきながら、そのファイルを相対パスで開こうとするのが間違い。


webBrowser コントロール (というかブラウザー) からすれば相対パスで指定されたってなんのこっちゃわからん。
exe ファイルのパスを取得してやれば必然的に html ファイルのフルパスが完成する。

この回答への補足

フルパスでできましたぁぁぁっ!
ありがとうございます。

補足日時:2012/06/22 23:45
    • good
    • 0
この回答へのお礼

おお、なるほど。webBrowserにとってはそんな感じなのですね。
ありがとうございます。
exeファイルのパス取得してカレントディレクトリをそちらに設定してみます。

お礼日時:2012/06/22 22:33

>exeファイルと同じフォルダにtest.htmlを置いたとして、


>webBrowser1.Navigate(@".\test.html")とすれば出来ると思ったんですが出来ません。

相対パスである以上、お約束ですが…
カレントディレクトリはどこになっています?

また、カレントディレクトリはプログラム実行中に変更される可能性もありますがその辺りは考慮されていますか?
# Windowsだとファイルダイアログでカレントディレクトリが変更される場合もありますし。

「EXE起動時にEXEファイルのある場所がカレントディレクトリ」という考え方は改めた方がいいです。
コマンドプロンプトでフルパス指定すればカレントディレクトリは違いますし、
ショートカット作成して作業ディレクトリを指定すればやはり違います。

上記のファイルダイアログで移る…というのを回避したとすると、
EXE起動時に実行ファイルのある場所をカレントディレクトリに設定する。とかいう動作をしない限りは
カレントディレクトリはあてにならない。
と考えておくべきです。
起動時に実行ファイルのパスを取得しておいて相対パスではなく絶対パスでアクセスする。のが安全です。
# ディレクトリトラバーサルはまた別の問題になりますが。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
カレントディレクトリですね。その言葉すら出てこなかったので、助かります。
カレントディレクトリの設定をしてみます。

お礼日時:2012/06/22 22:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!