プロセス名からハンドルを取得する方法
- 題名: プロセス名からハンドルを取得する方法
- 著者: シトロエン
- 日時: 2009/11/17 18:01:56
- ID: 25842
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: プロセス名からハンドルを取得する方法
- 著者: オショウ
- 日時: 2009/11/17 18:32:40
- ID: 25843
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: プロセス名からハンドルを取得する方法
- 著者: シトロエン
- 日時: 2009/11/17 20:06:38
- ID: 25844
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: プロセス名からハンドルを取得する方法
- 著者: Hongliang
- 日時: 2009/11/17 20:59:10
- ID: 25845
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: プロセス名からハンドルを取得する方法
- 著者: オショウ
- 日時: 2009/11/17 21:46:12
- ID: 25847
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
皆様こんにちは。 C#を使ってプログラミングしている者です。 早速ですが、質問があります。 最小化した外部プロセス(プログラム名はtest01.exe)を元の大きさに戻したいと思っています。 http://www.atmarkit.co.jp/fdotnet/dotnettips/151winshow/winshow.html を参考に、次のようにしたのですが、動きません。 Process[] ps = Process.GetProcessesByName("test01").MainWindowHandle; でプロセスは取得できていて、デバッガで見るとHandleの番号が2403とありました。 その番号を、handletest01に渡してやればいいと思うのですが、 handletest01 = p.MainWindowHandle; でうまくいっていないようです。 handletest01の値が、Side 4 , Zero 0となっています。 MainWindowHandleでないのかもと、 handletest01 = p.Handle; としても同様でした。 プロセス名からハンドルを取得する方法をご教示いただけないでしょうか。 // 外部プロセスのメイン・ウィンドウを起動するためのWin32 API [DllImport("user32.dll")] private static extern bool SetForegroundWindow(IntPtr handletest01); [DllImport("user32.dll")] private static extern bool ShowWindowAsync(IntPtr handletest01,int nCmdShow); [DllImport("user32.dll")] private static extern bool IsIconic(IntPtr handletest01); // ShowWindowAsync関数のパラメータに渡す定義値 private const int SW_RESTORE = 9; // 画面を元の大きさに戻す IntPtr handletest01; private void button1_Click(object sender, EventArgs e){ Process[] ps = Process.GetProcessesByName("test01").MainWindowHandle; foreach(Process p in ps) { handletest01 = p.MainWindowHandle; } // メイン・ウィンドウが最小化されていれば元に戻す if (IsIconic(handletest01)) ShowWindowAsync(handletest01, SW_RESTORE); // メイン・ウィンドウを最前面に表示する SetForegroundWindow(handletest01); }