私は別のアプリケーションの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. フォームとその子ウィンドウハンドルのウィンドウハンドルを取得する方法#
- 2. コンテキストメニューのウィンドウハンドルを取得しますか?
- 3. GtkWidgetからX11ウィンドウハンドルを取得する
- 4. GetWindowThreadProcessId(c#.net 4.0)のないウィンドウハンドルからプロセスIDを取得
- 5. 最後に起動したウィンドウのウィンドウハンドルを取得する
- 6. WPFウィンドウで使用するWordのウィンドウハンドルを取得します。
- 7. NSISでJava Swingアプリケーションのウィンドウハンドルを取得するにはどうすればよいですか?
- 8. Java(JNAを使用)ですべてのウィンドウハンドルのリストを取得するには?
- 9. ウィンドウハンドルが
- 10. ウィンドウハンドルのハンドル(c)
- 11. .netでInternet Explorerのウィンドウハンドルへの参照を取得する方法
- 12. PowerShell、子プロセスのウィンドウハンドルを取得する方法、Visual Studioプロジェクトの例
- 13. Win32ウィンドウハンドルの検証
- 14. Python pyautoguiウィンドウハンドル
- 15. Flaskアプリケーションのルートパスを取得
- 16. アプリケーション内のリソースファイルを取得
- 17. ウィンドウハンドルにメッセージを送信
- 18. 半透明のウィンドウを無視しながら、マウスポインタの下のウィンドウハンドルを取得します
- 19. 取得アプリケーション設定
- 20. どのようにウィンドウハンドルとWindowsクラッシュダンプファイルからフォーカスを持つウィンドウのリストを取得するには?
- 21. MVCアプリケーションでアクセストークンを取得
- 22. 動的アプリケーションURLを取得
- 23. WPF System.ComponentModel.Win32Exception(0x80004005):無効なウィンドウハンドル
- 24. リボンボタンのウィンドウハンドルを見つける
- 25. sdcardのアプリケーションのアイコンを取得
- 26. Centennialアプリケーション内のファイルのファイルパスを取得
- 27. 別のアプリケーションのイベントを取得する
- 28. 私のアプリケーションのアクティビティを取得する
- 29. アプリケーションのストーリーストーリーのインプレッションを取得する
- 30. 実行中のアプリケーションのバッジを取得
チェックアウトこの作業溶液:http://stackoverflow.com/a/28055461/1274092 –