2021年7月29日木曜日

WPFにWebView2を配置してmshta.exeの代替にするサンプル その2

前回のサンプルではファイルの入出力やコマンドの実行などはサーバ(deno)に頼る形になっていました。
今回のサンプルでは、WPFでファイルの入出力やコマンド実行ができるため、サーバが不要になりました。



検証環境

  • Windows 10 Pro バージョン 2004 (OS ビルド 19041.1083)
  • Microsoft Visual Studio Express 2017 for Windows Desktop Version 15.9.36
  • Microsoft.Web.WebView2 ver1.0.864.35
  • System.Text.Json ver 5.0.2






使用方法

ブラウザ側JSから「WPF.send」や「WPF.sendPromise」を実行するとWPF側の機能を呼び出せます。
一部の機能はcallBackに対応しています。






サンプルソース

imasara2script/210729_WebView2





苦労した事

コマンドの実行結果を非同期で取得する方法が、なかなか分からなくて苦労しました。
webView2のExecuteScriptAsyncまでは確実に実行されているのに、ブラウザ側に処理が反映されない…という現象が起きていて、結論としてはasyncを使うと別スレッドになりメインスレッドのコントロールにアクセスできないためエラー、という事がMainWindow.xaml.csで起きていた時の話と同じ感じでした。



0 件のコメント:

コメントを投稿