外部プログラムを起動後、ウィンドウ移動が失敗する
- 題名: 外部プログラムを起動後、ウィンドウ移動が失敗する
- 著者: SCSI
- 日時: 2010/03/20 17:18:06
- ID: 26581
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: 外部プログラムを起動後、ウィンドウ移動が失敗する
- 著者: Hongliang
- 日時: 2010/03/20 22:06:24
- ID: 26584
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: 外部プログラムを起動後、ウィンドウ移動が失敗する
- 著者: SCSI
- 日時: 2010/03/21 12:37:57
- ID: 26588
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
お世話になります。
現在開発しているプログラムで、うまく動作しない箇所がありまして、皆様のお知恵を拝借できればと考えております。
◆【開発しているプログラムの概要】
外部プログラムを一定間隔で、順次起動していく。
起動後に外部プログラムのウィンドウの位置を指定した箇所に移動させる。
なお、呼び出す外部プログラムはVB6、Delphiで作成されたもの。
◆【質問内容】
外部プログラムの起動は問題なくできるのですが、指定位置に移動させるところがうまくいきません。"MoveWindow"、"SetWindowPos"を用いて試してみたのですが、
例えば"notepad.exe"だと移動までうまく動作しますが、本当に呼び出したいプログラムは起動した位置から変更されません。
外部プログラムのハンドルは取れているようですし、"SetWindowPos"の場合は、復帰値が"True"で終了します。
下記に起動箇所のソースを記載させていただきます。何かお気づきの点がありましたら、ご教示いただけます様、よろしくお願い致します。
◆【ソース】
#region "(Fnc_AplProcessメソッド) :指定アプリ起動メソッド"
//名称 : Fnc_AplProcessメソッド
//引数 :
//戻り値 :
//処理内容 : 指定された外部アプリケーションを起動する。
//備考 :
private void Fnc_AplProcess(string Wrk)
{
bool intReturn;
System.Diagnostics.Process[] ps;
string[] B = Wrk.Split(new char[] { ',' }); //分解
//アプリ起動
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = B[1];
proc.StartInfo.Arguments = B[2];
proc.StartInfo.WorkingDirectory = B[3];
proc.Start();
//アイドル状態になるまで待機
proc.WaitForInputIdle();
********** ↓↓ここがうまくいかない↓↓ ************
//ウィンドウの位置を変更する
MoveWindow(proc.MainWindowHandle, 0, 500, 300, 200, 1);
//intReturn = SetWindowPos(proc.MainWindowHandle, HWND_TOP, 500, 100, 0, 0, SWP_NOSIZE);
********** ↑↑ここがうまくいかない↑↑ ************
Application.DoEvents();
}