FindWindowEx 遍歷所有視窗
阿新 • • 發佈:2018-11-10
FindWindowEx 唯一麻煩是第2個引數的指定 .
Explore 下視窗是Z序的 , 實際上就是根據 第一個引數 和 第2個引數 來找 第2個引數後的一個視窗:
HWND child = 0;
child = FindWindowEx ( NULL , child ,NULL,NULL);
這樣 , child 就是一個Explore ,
然後 , 通過迴圈能夠找到child 的下一個視窗
//遍歷所有子視窗的子視窗 , Z序遍歷 void print_window2(HWND parent , int level) { HWND child = NULL; TCHAR buf[MAX_PATH]; DWORD pid = 0, tid = 0; do{ child = FindWindowEx(parent, child, NULL, NULL); int ret = GetWindowText(child, buf, MAX_PATH); buf[ret] = 0; tid = GetWindowThreadProcessId(child, &pid); for (int i = 0; i < level; ++i) _tprintf(L"\t"); _tprintf(L"%s , pid:%d, tid:%d\n", buf, pid, tid); if (child) print_window2(child , level + 1); } while (child); } //遍歷所有 explore 下的視窗 , Z序遍歷 void print_window() { HWND child = NULL; TCHAR buf[MAX_PATH]; DWORD pid = 0, tid = 0; do{ //查詢 Explore 下的一個視窗,如果能找到則根據 Explore 下的child 繼續找 child = FindWindowEx(NULL, child, NULL, NULL); int ret = GetWindowText(child, buf, MAX_PATH); buf[ret] = 0; tid = GetWindowThreadProcessId(child, &pid); _tprintf(L"%s , pid:%d, tid:%d\n", buf, pid, tid); //遍歷子視窗們 if (child) print_window2(child, 1); } while (child); }