mieki256's diary



2026/02/12(木) [n年前の日記]

#1 [lazarus] LazarusでWebView2を使いたい。その3

Lazarus 4.4 + WebView4Delphi を使って Windows用のスクリーンセーバを作成しているところ。

リソースファイルにHTMLを含めて使いたい :

リソースファイル内にHTMLファイルを含めて、その内容を文字列として取得したい。AI(Google Gemini)に尋ねたら、以下のような記述を提示された。

まずはリソースファイル。

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));

以上です。

過去ログ表示

Prev - 2026/02 -
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project