Open1
C#でProcessのハンドルを取得するときはHandleではなくMainWindowHandleを使う
C#で外部Process
のハンドルを取得する際、権限を持ってないとHandle
を取得しようとするとSystem.ComponentModel.Win32Exception: Access is denied
といったエラーが起きます。
しかしMainWindowHandle
は特に権限がなくても取得できます。
例えばプロセスIDだけがわかってる状態でそのProcess
が最小化状態か調べたい場合以下のようにします。
[DllImport("user32.dll")]
public static extern bool IsIconic(IntPtr handle);
private void Func(){
IntPtr handle = Process.GetProcessById(pid).MainWindowHandle;//Error occurs for "Handle", not "MainWindowHandle"
if (IsIconic(handle)) //実行したい処理;
}