透过句柄获取其它程序窗体的Windowstate
通过句柄获取其它程序窗体的Windowstate
找了好久,没找到如何通过句柄获取其它程序窗体的Windowstate,如MINIMIZED ,MAXIMIZED,NORMAL
最好不要通过窗体大小判断
------解决思路----------------------
------解决思路----------------------
在它的WindowStyles里面
找了好久,没找到如何通过句柄获取其它程序窗体的Windowstate,如MINIMIZED ,MAXIMIZED,NORMAL
最好不要通过窗体大小判断
------解决思路----------------------
GetWindowLong(hWnd,GWL_STYLE) & WS_MINIMIZE == WS_MINIMIZE 就是 最小化的 同理 最大化 一样 两个都没有的就 正常的
------解决思路----------------------
在它的WindowStyles里面
[DllImport("user32.dll")]
public static extern bool IsWindowVisible(IntPtr hWnd);
[DllImport("user32.dll")]
public static extern long GetWindowLong(IntPtr hWnd, int nIndex);
public enum WindowStyles : long
{
WS_BORDER = 0x00800000,
WS_CAPTION = 0x00C00000,
WS_CHILD = 0x40000000,
WS_CHILDWINDOW = 0x40000000,
WS_CLIPCHILDREN = 0x02000000,
WS_CLIPSIBLINGS = 0x04000000,
WS_DISABLED = 0x08000000,
WS_DLGFRAME = 0x00400000,
WS_GROUP = 0x00020000,
WS_HSCROLL = 0x00100000,
WS_ICONIC = 0x20000000,
WS_MAXIMIZE = 0x01000000,
WS_MAXIMIZEBOX = 0x00010000,
WS_MINIMIZE = 0x20000000,
WS_MINIMIZEBOX = 0x00020000,
WS_OVERLAPPED = 0x00000000,
WS_OVERLAPPEDWINDOW = WS_OVERLAPPED
------解决思路----------------------
WS_CAPTION
------解决思路----------------------
WS_SYSMENU
------解决思路----------------------
WS_THICKFRAME
------解决思路----------------------
WS_MINIMIZEBOX
------解决思路----------------------
WS_MAXIMIZEBOX,
WS_POPUP = 0x80000000,
WS_POPUPWINDOW = WS_POPUP
------解决思路----------------------
WS_BORDER
------解决思路----------------------
WS_SYSMENU,
WS_SIZEBOX = 0x00040000,
WS_SYSMENU = 0x00080000,
WS_TABSTOP = 0x00010000,
WS_THICKFRAME = 0x00040000,
WS_TILED = 0x00000000,
WS_TILEDWINDOW = WS_OVERLAPPED
------解决思路----------------------
WS_CAPTION
------解决思路----------------------
WS_SYSMENU
------解决思路----------------------
WS_THICKFRAME
------解决思路----------------------
WS_MINIMIZEBOX
------解决思路----------------------
WS_MAXIMIZEBOX,
WS_VISIBLE = 0x10000000,
WS_VSCROLL = 0x00200000
}
public static bool HasWindowStyle(IntPtr hwnd, long styles, bool fullMatch)
{
var result = GetWindowLong(hwnd, GWL_STYLE) & styles;
return fullMatch ? result == styles : result != 0;
}
是否最大/小化WS_MINIMIZE
HasWindowStyle(hwnd, WindowStyles.WS_MAXIMIZE, false);
是否正常
IsWindowVisible(hwnd) && !HasWindowStyle(hwnd, WindowStyles.WS_MAXIMIZE, false) && !HasWindowStyle(hwnd, WindowStyles.WS_MINIMIZE, false);