1.FindWindow
函数原型: HWND FindWindow ( LPCTSTR lpClassName, LPCTSTR lpWindowName );
一般把lpClassName置为NULL,用lpWindowName查找,查找成功后返回窗口句柄,如果多个窗口的名称都
是 lpWindowName,这个函数只返回查到到的第一个。
2.EnumWindows
BOOL EnumWindows ( WNDENUMPROC lpEnumFunc, // callback function LPARAM lParam // application-defined value );
lpEnumFunc是回调函数,必须自己定义,形如:
BOOL CALLBACK EnumWindowsProc ( HWND hwnd, // handle to parent window LPARAM lParam // application-defined value );
hwnd是EnumWindows函数枚举的窗口句柄,hwnd和lParam是EnumWindows函数回调时传入的,在EnumWindowsProc函数中可以对窗口作处理。
以上两个函数都只找顶层窗口,不找子窗口
3.Top_Level窗口即主窗口,里面可以包含子窗口;TOPMOST窗口是始终置顶的窗口;active window是目前处于编辑状态的窗口,它是对于Top_Level而言的,一个子窗口处于编辑状态,则包含它的父窗口是active window.
4.GetWindow
函数原型:HWND GetWindow(HWND hWnd,UNIT nCmd)
nCmd:
GW_CHILD:如果指定窗口是父窗口,则获得的是在Z序顶端的子窗口的句柄,否则为NULL。 GW_HWNDNEXT:返回的句柄标识了在Z序中指定窗口下的相同类型的窗口。如果指定窗口是TOPMOST窗口,则该句柄标识了在指定窗口下的TOPMOST窗口: 如果指定窗口是Top_Level窗口,则该句柄标识了在指定窗口下的Top_Level窗口;如果指定窗口是子窗口,则句柄标识了在同父窗口下的下一个子窗口。
5.IsWindow判断一个句柄标识的是否是一个窗口
6.GetDesktopWindow:该函数返回桌面窗口的句柄。桌面窗口覆盖整个屏幕。桌面窗口是一个要在其上绘制所有的图标和其他窗口的区域,它是所有其他窗口的父窗口
7.FindWindowEx:
原型:HWND FindWindowEx(HWND hwndParent,HWND hwndChildAfter,LPCTSTR lpszClass,LPCTSTR lpszWindow)
hwndParent:要查找子窗口的父窗口句柄。
如果hwnjParent为NULL,则函数以桌面窗口为父窗口,查找桌面窗口的所有子窗口。
Windows NT5.0 and later:如果hwndParent是HWND_MESSAGE,函数仅查找所有消息窗口。
hwndChildAfter :子窗口句柄。查找从在Z序中的下一个子窗口开始。子窗口必须为hwndParet窗口的直接子窗口而非后代窗口。
如果HwndChildAfter为NULL, 查找从hwndParent的第一个子窗口开始。
如果hwndParent 和 hwndChildAfter同时为NULL,则函数查找所有的顶层窗口及消息窗口。
lpszClass:窗口类名
lpszWindow:窗口名(窗口标题)
8.EnumChildWindows:枚举指定窗口的所有子窗口
原型:
BOOL EnumChildWindows( HWND hWndParent, // handle to parent window // 父窗口句柄
WNDENUMPROC lpEnumFunc, // callback function // 回调函数的地址
LPARAM lParam // application-defined value // 你自已定义的参数
);
9.FindWindowEx,EnumChildWindows常用于得到窗口中的子窗口控件,在循环体中调用函数EnumChildWindow比调用GetWindow函数可靠。 调用GetWindow函数实现该任务的应用程序可能会陷入死循环或退回一个已被销毁的窗口句柄。
10.把灰色按钮置为可用就是查找到灰色按钮的窗口,得到其句柄,然后把它变成可用的。