2021年7月8日木曜日

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

WPFを使うのもVisualStudioを使うのも初めてで、ドキュメントも読まずに作ったので正しくない箇所は恐らく無数にある感じだとは思いますが、最低限やりたい事が出来るのは動作確認しました。



背景


mshta.exeがもうすぐ使えなくなりそうです。
根拠は以下の通りです。



動機


mshta.exeは非常に便利でした。使えなくなるのは、とても困ります。
VisualStudioは非常に多機能ですが、それ故のデメリットも多いです。
学習コストが高いとか、IDEが動作するためのシステム要件も高いとかなど…。

mshta.exeと同様の機能を提供するプログラムが欲しいと思いました。
mshta.exeがサポートしていた全ての機能を再現するのは大変そうですが、私にとって必要な物だけなら何とかなるかもしれないと思いました。
denoを使えるようになった今、以下の項目さえ満たせば最低限OKです。
  • 指定したURLのページを表示できる。
  • 指定したアイコンをウィンドウ アイコンにできる。
  • ウィンドウサイズをプログラムから変更できる。



以下のソースをビルドするために必要なもの


私はスタンドアローンが好きなのでWebView2ランタイムはスタンドアローンインストーラを使用しました。
このランタイムは、ビルドしたものを実行するPCの方でも必要です。



動作確認した環境


  • Windows10 pro ver 2004 (OS ビルド 19041.985) (64bit)
  • Visual Studio Express 2017 for Windows Desktop Version 15.9.36
  • Microsoft .NET Framework Version 4.8.04084
  • C#ツール 2.10.0-beta2-63501-03+b9fb1610c87cccc8ceb74a770dba261a58e39c4a
  • NuGet パッケージ マネージャー 4.6.0
正直なところ、どのあたりまで関係があるのか理解していませんが、プロジェクトフォルダ内のファイルを少しずつ削除しながらビルドしていって必要不可欠なファイルを探していく過程でNuGetに関する記述が含まれるファイルを削除したらビルドできなくなったので、関係あるのかな…と思った程度です。



ソース


imasara2script/210707-netHTA


ビルド方法


Visual Studio Express 2017でビルドします。



実行例





お世話になったサイト





欲を言えば


従来の「.hta」ファイルをそのまま流用できるように「ActiveXObject」とか「CreateObject」などをサポートしたり、mshta.exeでは難しかった「画面上へドラッグ&ドロップされたアイテムを処理する」とかも出来るようになると良いな…と思いましたが、そこまで技術力を高められる自信は無いので、誰かが実現してくれたら良いな…と思っています。



開発者用ツールでのビルド


上記ソースは開発者用ツールでは正常にビルドできませんでした。
「ビルド成功」とは表示されてexeファイルも作成されるのですが実際には開けない、という感じでした。

Visual Studio Express 2017でビルドして、様々なファイルが作成された状態のプロジェクトフォルダならビルド成功しました。

0 件のコメント:

コメントを投稿