WebBrowserコントロールを使用してC#アプリを作成していますが、表示するすべてのコンテンツを、静的ローカルファイルやリモートファイルではなく、埋め込みリソースから取得する必要があります。
コントロールの初期テキストを埋め込みHTMLファイルに設定すると、この投稿に触発されたこのコードでうまく機能します。
browser.DocumentText=loadResourceText("myapp.index.html");
private string loadResourceText(string name)
{
Assembly assembly = Assembly.GetExecutingAssembly();
Stream stream = assembly.GetManifestResourceStream(name);
StreamReader streamReader = new StreamReader(stream);
String myText = streamReader.ReadToEnd();
return myText;
}
それだけに、HTMLで参照されているファイル(JavaScript、画像<img src="whatever.png"/>
など)は機能しません。私はこことここで同様の質問を見つけましたが、どちらも私が何を意味するのかを正確に尋ねていません。つまり、ファイルではなく、exeに埋め込まれたリソースを参照しています。
私は試しres://...
てみました<base href='..."
が、どちらもうまくいかなかったようです(私はそれを正しく理解していないかもしれませんが)。
おそらく(この質問に関する私自身の提案に従って)、小さな埋め込みC#Webサーバーを使用することが唯一の方法です...しかし、これを実現するためのトリックがあると思いましたか?
ありがとう!