- 締切済み
DOSのSTARTコマンドでEXEを呼び出したときのウィンドウ制御について
お世話になります。 環境:WindowsVista 下記の様な構成のバッチファイルを作成し、実行したところ、 最終的に呼ばれているEXEのウィンドウが背面に隠れてしまいます。 <使用するファイル> バッチX バッチY 実行ファイルZ ( *.exe) <処理概要> 起動バッチを最新版に更新し、実行ファイルを起動する <処理の流れ> 1)バッチXをMouse-DblClickにて起動 2)バッチXにて、STARTコマンドでバッチYを呼び出す →STARTコマンドを発行後にEXITコマンドを発行し、バッチX自身を終了 4)バッチYにて、STARTコマンドで実行ファイルZを呼び出す →STARTコマンドを発行後にEXITコマンドを発行し、バッチY自身を終了 <問題> 上記(4)の時点で実行ファイルZが起動するのですが、 ・ウィンドウがアクティブにならない ・Explorerなど他ウィンドウが有る時は、その背面として表示されてしまう。 という2点の問題があります。 <確認したこと> 単純に バッチ起動→実行ファイル呼び出し という、テスト用バッチを作って 実行したところ、上記のような問題はおこりませんでした。 推測するに、バッチを2段経由していることに拠ると考えています。 この辺りのウィンドウ制御についてご教授頂きたく、宜しくお願い致します。 佐藤
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- AKARI0418
- ベストアンサー率67% (112/166)
親ウィンドウを認識していないからでしょうね。 Startコマンドでウィンドウのタイトルは指定できるわけですから、Win32APIで最前面にすればよいのではないでしょうか? まず対象のウインドウを検索する。 GetForegroundWindowで最前面のウィンドウハンドルを取得する。 GetNextWindowとGetWindowTextを使用して、該当のウインドウのハンドルを検索する。 SetForegroundWindowで当該ウインドウを最前面に設定する。 http://www.geocities.jp/asumaroyuumaro/program/winapi/window.html