KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
For any given window I handle, I need a way to find out whether or not the given window is Modal. Far as I can tell, there are no methods that do exactly that, which is why I need some clever workaround to work this out! Help is appreciated! EDIT : Why is my GetWindow(,GW_OWNER) failing? :( [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)] internal static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport("user32.dll", SetLastError = true)] internal static extern IntPtr GetWindow(IntPtr hWnd, GetWindow_Cmd uCmd); [DllImport("user32.dll", ExactSpelling = true)] internal static extern IntPtr GetAncestor(IntPtr hwnd, GetAncestor_Flags gaFlags); [DllImport("user32.dll", SetLastError = false)] internal static extern IntPtr GetDesktopWindow(); [DllImport("user32.dll", SetLastError = true)] internal static extern int GetWindowLong(IntPtr hWnd, int nIndex); const UInt32 WS_DISABLED = 0x8000000; internal enum GetAncestor_Flags { GetParent = 1, GetRoot = 2, GetRootOwner = 3 } internal enum GetWindow_Cmd : uint { GW_HWNDFIRST = 0, GW_HWNDLAST = 1, GW_HWNDNEXT = 2, GW_HWNDPREV = 3, GW_OWNER = 4, GW_CHILD = 5, GW_ENABLEDPOPUP = 6 } IntPtr _inspHwnd = FindWindow("rctrl_renwnd32", inspector.Caption); // searching for a window with this name if (_inspHwnd.ToInt32() != 0) // found window with this name { IntPtr _ownerHwnd = GetWindow(_inspHwnd, GetWindow_Cmd.GW_OWNER); if (_ownerHwnd.ToInt32() != 0) { IntPtr _ancestorHwnd = GetAncestor(_ownerHwnd, GetAncestor_Flags.GetParent); if (_ancestorHwnd == GetDesktopWindow()) { if (GetWindowLong(_ancestorHwnd, -16) == WS_DISABLED) { // i
Tags (comma-separated)
Save Edits
Cancel