;============================================================ ; sample_webview2_bridge.hsp ; ; HSP <-> JS 双方向メッセージングのフルサンプル。 ; - NavigateToString でローカル HTML を表示 ; - JS: ボタン押下で window.chrome.webview.postMessage() ; - HSP: wv_recv で取り出して mesbox に追記 ; - HSP 側のテキストボックスに入力 → wv_send で JS に送信、 ; JS 側で DOM に反映 ; ; 依存: hspwebview2.dll (plugins/win32/hspwebview2/Release/) ;============================================================ #include "hsp3_net_64.as" #include "iron_webview2.hsp" title "iron_webview2 bridge demo (HSP <-> JS)" screen 0, 960, 720 cls 4 ;----- UI ----- objsize 120, 28 pos 8, 8 button gosub "送信", *on_send pos 140, 8 input s_in, 500, 24 pos 8, 520 mesbox s_log, 944, 192 sdim s_in, 2048 sdim s_log, 8192 ;----- HTML を組み立て (bridge 付き) ----- sdim html_src, 8192 html_src = {" WV2 Bridge

HSP <-> JS Bridge Demo

JS からの送信:

HSP からの受信ログ

"} ;----- WebView2 を開いて HTML をロード ----- wv_open 8, 44, 944, 464 wv_id = stat if wv_id < 0 { s_log = "wv_open 失敗: " + wv_id goto *loop } wv_html wv_id, html_src s_log = "WebView2 bridge ready (id=" + wv_id + ")" goto *loop *on_send if wv_id < 0 : return if s_in = "" : return wv_send wv_id, s_in s_log += "\nHSP -> JS: " + s_in s_in = "" objprm 1, "" ; input をクリア return *loop if wv_id >= 0 { msg = wv_recv(wv_id) if msg ! "" { s_log += "\nJS -> HSP: " + msg objprm 3, s_log ; mesbox index (button, input, button, mesbox) } } await 30 goto *loop