WPFを使うのもVisualStudioを使うのも初めてで、ドキュメントも読まずに作ったので正しくない箇所は恐らく無数にある感じだとは思いますが、最低限やりたい事が出来るのは動作確認しました。
背景
mshta.exeがもうすぐ使えなくなりそうです。
根拠は以下の通りです。
- InternetExplorerのサポートが2022年6月16日に終了します。
- InternetExplorerを構成していたコンポーネントも2029年にサポート終了予定です。
- mshta.exeのレンダリングエンジンやスクリプトエンジンは恐らくIEと共通です。
動機
mshta.exeは非常に便利でした。使えなくなるのは、とても困ります。
VisualStudioは非常に多機能ですが、それ故のデメリットも多いです。
学習コストが高いとか、IDEが動作するためのシステム要件も高いとかなど…。
mshta.exeと同様の機能を提供するプログラムが欲しいと思いました。
mshta.exeがサポートしていた全ての機能を再現するのは大変そうですが、私にとって必要な物だけなら何とかなるかもしれないと思いました。
denoを使えるようになった今、以下の項目さえ満たせば最低限OKです。
- 指定したURLのページを表示できる。
- 指定したアイコンをウィンドウ アイコンにできる。
- ウィンドウサイズをプログラムから変更できる。
以下のソースをビルドするために必要なもの
- Visual Studio Express 2017
- WebView2ランタイム
- Microsoft .NET Framework 4.7
このランタイムは、ビルドしたものを実行する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
ソース
imasara2script/210707-netHTA
ビルド方法
Visual Studio Express 2017でビルドします。
実行例
お世話になったサイト
- 【2021年度】Visual Studioの無償ライセンスについて | 計測ブログ Measurement Blog
- WebView2 を Visual Studio 2017 Expressで利用できるまで - Qiita
- ウィンドウの幅や高さに合わせてコントロールのサイズを自動調整したい (autosize=true) - WPFプログラミング
- WPFでコマンドライン引数を取得するには?[C#、VB、2.0、3.0、3.5] - @IT
- WPF でアイコンを指定する
- WebView2コントロールでの操作|プログラムでネットサーフィン
- WebView2コントロールとWebページ(JavaScript)の連携|プログラムでネットサーフィン
- Window.Icon プロパティ (System.Windows) | Microsoft Docs
- C#で別スレッドからコントロールを操作する (Dispatcher.Invoke) - Ararami Studio
欲を言えば
従来の「.hta」ファイルをそのまま流用できるように「ActiveXObject」とか「CreateObject」などをサポートしたり、mshta.exeでは難しかった「画面上へドラッグ&ドロップされたアイテムを処理する」とかも出来るようになると良いな…と思いましたが、そこまで技術力を高められる自信は無いので、誰かが実現してくれたら良いな…と思っています。
開発者用ツールでのビルド
上記ソースは開発者用ツールでは正常にビルドできませんでした。
「ビルド成功」とは表示されてexeファイルも作成されるのですが実際には開けない、という感じでした。
Visual Studio Express 2017でビルドして、様々なファイルが作成された状態のプロジェクトフォルダならビルド成功しました。
0 件のコメント:
コメントを投稿