C#でアクティブウィンドウの取得
アクティブウィンドウを取得する方法
アクティブプロセスからウィンドウハンドルを取得する。
直接アクティブウィンドウを取得する.NET FrameWorkのクラス(関数)は無いみたい。
Win32APIを使っての取得方法を紹介。
以下のクラス(関数)を使ってアクティブプロセスを取得し、
取得したプロセスのProcess.MainWindowHandle でウィンドウハンドルを取得します。
---------------
/// Win32API の extern 宣言クラス
public class WinAPI {
[DllImport("user32.dll")]
public static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")]
public static extern int GetWindowThreadProcessId(IntPtr hWnd, out int lpdwProcessId);
}
public class sample {
///
/// アクティブなプロセスを取得する
///
///
public static Process GetActiveProcess()
{
// アクティブなウィンドウハンドルの取得
IntPtr hWnd = WinAPI.GetForegroundWindow();
int id;
// ウィンドウハンドルからプロセスIDを取得
WinAPI.GetWindowThreadProcessId(hWnd, out id);
Process process = Process.GetProcessById(id)
return process;
}
}
---------------
取得したウィンドウハンドルとWin32APIを使って、
様々なプロセスに対しての操作が可能となります。
.
1 件のコメント:
アクティブウィンドウの取得が出来ずに困っている所でした。
おかげさまで無事問題が解決出来ました。ありがとうございました。
コメントを投稿