2026/02/12(木) [n年前の日記]
#1 [lazarus] LazarusでWebView2を使いたい。その3
Lazarus 4.4 + WebView4Delphi を使って Windows用のスクリーンセーバを作成しているところ。
◎ リソースファイルにHTMLを含めて使いたい :
リソースファイル内にHTMLファイルを含めて、その内容を文字列として取得したい。AI(Google Gemini)に尋ねたら、以下のような記述を提示された。
まずはリソースファイル。
myresources.rc
読み出しには以下の関数を提示された。
上記の関数の呼び出し方は以下。
まずはリソースファイル。
myresources.rc
MY_HTML_FILE RCDATA "index.html" STRINGTABLE PRELOAD DISCARDABLE BEGIN 1 "SSaver Wrapper JavaScript" END
- MY_HTML_FILE が識別名。RCDATA はデータの種類。その直後に埋め込みたいファイル名を記述。
- STRINGTABLE 部分はスクリーンセーバ名を記述してる。
読み出しには以下の関数を提示された。
{ リソースファイル内のファイルから文字列を取り出す }
function TFullScrnForm.GetHtmlFromResource(ResName: String): String;
var
ResStream: TResourceStream;
StringStream: TStringStream;
begin
Result := '';
try
// リソース名と型(RT_RCDATA)を指定してストリームを作成
ResStream := TResourceStream.Create(HInstance, ResName, RT_RCDATA);
try
StringStream := TStringStream.Create('');
try
// リソースの内容をStringStreamにコピー
StringStream.CopyFrom(ResStream, ResStream.Size);
Result := StringStream.DataString;
finally
StringStream.Free;
end;
finally
ResStream.Free;
end;
except
on E: Exception do
// リソースが見つからない
ShowMessage('Error loading resource: ' + E.Message);
end;
end;
上記の関数の呼び出し方は以下。
// リソースからHTML内の文字列を取得
HtmlContent := GetHtmlFromResource('MY_HTML_FILE');
// ブラウザ部分にHTMLの内容を送る
WVBrowser1.NavigateToString(UTF8Decode(HtmlContent));
[ ツッコむ ]
以上です。