加深记忆------
经常用到这些,做个记录!
这里列出两种遍历方式...
用到的函数原型:
1 HWND GetWindow( 2 HWND hWnd, // handle to original window 3 UINT uCmd // relationship flag 4 ); 5 6 HWND GetDeskTopWindow(VOID) 7 8 int GetWindowText( 9 HWND hWnd, // handle to window or control with text 10 LPTSTR lpString, // address of buffer for text 11 int nMaxCount // maximum number of characters to copy 12 ); 13 14 //----代码 15 TCHAR chTitleText[MAX_PATH]={0}; //用来保存窗口标题 16 //在Windows下,所有窗口都为Windows的子窗口. 17 HWND nHwnd=::GetWindow(GetDeskTopWindow,GW_CHILD); 18 19 //循环遍历出来 20 while(nHwnd!=NULL) 21 { 22 //获取窗口标题并且保存在数组里 23 ::GetWindowText(nHwnd,chTitleText,MAX_PATH); 24 //判断标题是否大于0,大于则输出 25 if(_tcslen(chTitleText)>0) MessageBox(chTitleText); 26 //继续下一次遍历 27 nHwnd = ::GetWindow(nHwnd,GW_HWNDNEXT); 28 }
方式2,使用FindWindow
使用到的函数原型:
1 //使用到的参数原型 2 HWND FindWindow( 3 LPCTSTR lpClassName, // 类名 4 LPCTSTR lpWindowName // 标题名 5 ); 6 HWND FindWindowEx( 7 HWND hwndParent, // 父窗口句柄 8 HWND hwndChildAfter, // 子窗口句柄 9 LPCTSTR lpszClass, // 类名 10 LPCTSTR lpszWindow // 标题名 11 ); 12 13 int GetWindowText( 14 HWND hWnd, // 要获取标题的窗口句柄 15 LPTSTR lpString, // 获取标题后存放的变量 16 int nMaxCount // 获取的长度 17 ); 18 #define g_ClassNme "D3D Window" //窗口类名 19 TCHAR titleText[MAX_PATH]={0}; //存放标题数组 20 21 HWND nHwnd = ::FindWindow(g_ClassNme,NULL); //查找窗口 22 while(nHwnd!=NULL) //循环遍历 23 { 24 ::GetWindowText(nHwnd,titleText,MAX_PATH); //获取标题 25 if(_tcslen(titleText)>0)MessageBox(titleText); //判断长度输出标题 26 27 nHwnd = ::FindWindowEx(0,nHwnd,g_ClassNme,NULL); //继续查找下一个 28 }