私は別のアプリケーションのmainWindowhandleを与えたアプリケーションを構築しています。これは、ウィンドウの状態に関する情報を収集します。子ウィンドウに関する情報の収集には問題はありませんが、アプリケーションの開いている他のウィンドウやメニューにはアクセスできません。アプリケーションのすべてのウィンドウハンドルを取得する方法はありますか?アプリケーションのウィンドウハンドルを取得
答えて
Process.MainWindowHandle
が表示されます:P/Invokeを使用してEnumWindows
関数を呼び出すことができます。この関数は、システムのトップレベルウィンドウごとにコールバックメソッドを呼び出します。
コールバックでは、GetWindowThreadProcessId
と呼び出し、ウィンドウのプロセスIDとProcess.Id
を比較してください。プロセスIDが一致する場合は、ウィンドウハンドルをリストに追加します。
まず、アプリケーションのメインウィンドウのウィンドウハンドルを取得する必要があります。
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool EnumChildWindows(IntPtr hwndParent, EnumWindowsProc lpEnumFunc, IntPtr lParam);
private List<IntPtr> GetChildWindows(IntPtr parent)
{
List<IntPtr> result = new List<IntPtr>();
GCHandle listHandle = GCHandle.Alloc(result);
try
{
EnumWindowProc childProc = new EnumWindowProc(EnumWindow);
EnumChildWindows(parent, childProc, GCHandle.ToIntPtr(listHandle));
}
finally
{
if (listHandle.IsAllocated)
listHandle.Free();
}
return result;
}
MEZ問題のISN」を
[DllImport("user32.dll", SetLastError = true)] static extern IntPtr FindWindow(string lpClassName, string lpWindowName); IntPtr hWnd = (IntPtr)FindWindow(windowName, null);
その後、あなたはすべてのchildwindowsを取得するには、このハンドルを使用することができます子ウィンドウを取得すると、私はそれを簡単に行うことができますが、私は何もできませんmainWindowとその子のほかの他のウィンドウに移動することです... – user361526
これは、任意のウィンドウでも、独自のアプリケーションに属していないウィンドウ。申し訳ありませんが、私はあなたの質問を誤解した場合。 – Mez
どこから 'EnumWindowProc'が来ますか? –
- 1. GtkWidgetからX11ウィンドウハンドルを取得する
- 2. GetWindowThreadProcessId(c#.net 4.0)のないウィンドウハンドルからプロセスIDを取得
- 3. 最後に起動したウィンドウのウィンドウハンドルを取得する
- 4. NSISでJava Swingアプリケーションのウィンドウハンドルを取得するにはどうすればよいですか?
- 5. Java(JNAを使用)ですべてのウィンドウハンドルのリストを取得するには?
- 6. PowerShell、子プロセスのウィンドウハンドルを取得する方法、Visual Studioプロジェクトの例
- 7. ウィンドウハンドルが
- 8. ウィンドウハンドルのハンドル(c)
- 9. Win32ウィンドウハンドルの検証
- 10. Flaskアプリケーションのルートパスを取得
- 11. アプリケーション内のリソースファイルを取得
- 12. ウィンドウハンドルにメッセージを送信
- 13. 半透明のウィンドウを無視しながら、マウスポインタの下のウィンドウハンドルを取得します
- 14. 別のアプリケーションのイベントを取得する
- 15. 実行中のアプリケーションのバッジを取得
- 16. 私のアプリケーションのアクティビティを取得する
- 17. アプリケーションのストーリーストーリーのインプレッションを取得する
- 18. sdcardのアプリケーションのアイコンを取得
- 19. すべてのアプリケーションのリストを取得
- 20. リボンボタンのウィンドウハンドルを見つける
- 21. WPF System.ComponentModel.Win32Exception(0x80004005):無効なウィンドウハンドル
- 22. opensourceアプリケーション内のデータを取得する
- 23. J2EEアプリケーションからIMSのデータを取得
- 24. アプリケーションのリソース言語を取得
- 25. アプリケーションのストレージサイズを取得する方法
- 26. iOSアプリケーションのテキストファイルを取得する
- 27. ブラックベリーのアプリケーション名を取得する
- 28. アプリケーションのバージョンを取得するには?
- 29. アプリケーション用のiTunesアートワークを取得する
- 30. Fiddlerのセッションからアプリケーション名を取得
チェックアウトこの作業溶液:http://stackoverflow.com/a/28055461/1274092 –