、いや、それは一般的な方法では不可能ではありません。
ただし、より具体的なシナリオでは、Win APIからすべてのWindowsの一覧を取得して、それぞれを検索しようとしているプロパティについて調べることができます。
public static class Helper
{
public static IntPtr[] GetToplevelWindows()
{
List<IntPtr> windowList = new List<IntPtr>();
GCHandle handle = GCHandle.Alloc(windowList);
try
{
Helper.EnumWindows(Helper.EnumWindowsCallback, (IntPtr)handle);
}
finally
{
handle.Free();
}
return windowList.ToArray();
}
private delegate bool EnumWindowsCallBackDelegate(IntPtr hwnd, IntPtr lParam);
[DllImport("user32.Dll")]
private static extern int EnumWindows(EnumWindowsCallBackDelegate callback, IntPtr lParam);
private static bool EnumWindowsCallback(IntPtr hwnd, IntPtr lParam)
{
((List<IntPtr>)((GCHandle)lParam).Target).Add(hwnd);
return true;
}
}
*周りの長い道のりを使用しています。 'Application'オブジェクトはすべてのものを' OpenForms'コレクション(WinFormsアプリケーション用)に保持します。 –