Matlab Compiler を使用して .exe ファイルを作成しました。プログラムの開始には 15 秒かかります。コンソール ウィンドウを非表示にして、カスタム スプラッシュ スクリーンを表示したいと考えています。どうやってやるの?
3 に答える
スプラッシュ画面の作成に関して、MathWorks File Exchangeには、それだけを扱ういくつかの提出物があります。
- WThielickeからコンパイルされた.exeGUI用の豪華なスプラッシュ画面
- クンハンからsplash.m。
- RoySchestowitzのスプラッシュスクリーン。
私はそれらのどれも個人的に使用していませんが、独自のスプラッシュスクリーン機能を設計したい場合は、少なくともいくつかのガイダンスを提供する必要があります。
「ランチャー」プログラムを作成できます。
ランチャーは
- スプラッシュ スクリーンを作成する
- CreateProcess() またはその他の方法を使用して、matlab exe を起動します。
- matlab exe が適切に開くまで待ちます
- 出口
注意が必要なのは、matlab プログラムがいつ開始されたかを判断することです。1 つの方法は、EnumWindows() と GetWindowText() をループで呼び出して、matlab ウィンドウのタイトルを探すことですが、matlab プログラムが何をするかを知っていれば、より良い方法を思いつくことができるかもしれません。
何か問題が発生した場合に備えて、matlab プロセスが終了していないことを確認し続ける必要があるでしょう。
DOS ウィンドウを取り除くには、mcc -e
代わりに を使用しmcc -m
ます。が提供するオンライン ドキュメンテーションの「MATLAB Compiler > Function Reference」を参照してくださいdoc()
。ただし、これはやりたくないかもしれません。DOS ウィンドウは最後の手段です。未処理の例外、コア ダンプ、およびその他の診断出力が出力される場所です。少なくともオプションにして、DOS ウィンドウを備えたデバッグ ビルドを作成できるようにします。
私の経験では、コンパイルされたスタンドアロンの Matlab プログラムのスタートアップ オーバーヘッドは、制御がユーザーの M コードに転送される前に発生するため、スプラッシュ スクリーンを外部プログラムで実行するか、mcc
生成する C ラッパーにフックする必要があります。ランチャーを作成するという Michael J の提案を使用できます。matlab.exe
ただし、これはスタンドアロン アプリであるため、Matlab デスクトップ ウィンドウを探しているわけではありません。Matlab プログラムがいつ開始されたかを検出するには、プログラムが最初に行うこととして M コードに小さな一時ファイルを書き出させ、ランチャーにそれを監視させます。