WinCE下枚舉窗體的函數與Win32不同,所以要用到GetWindow
要用到GetWindow的第二個參數有GW_HWNDNEXT,GW_CHILD。
用Task Manager觀察下窗口句柄,發現今日在DesktopExplorerWindow類下,所以先取得母句柄:
hParent = FindWindow(_T("DesktopExplorerWindow"), _T("Desktop"));
接下來是取得子窗口句柄:
hWndPhonEx = GetWindow(hParent, GW_CHILD);
在母窗口下有各個插件的句柄,但是如果直接用GW_HWNDNEXT是取不到的,其實插件句柄都在第三個Worker下。
所以要先取得第三個Worker的句柄。
接下來比較奇怪,有人給我解釋下嗎?顯示的是兄弟窗體,但是要這樣取得:
hWndPhonEx = GetWindow(hWndPhonEx, GW_CHILD);
用的是GW_CHILD,很奇怪。
再是
hWndPhonEx = GetWindow(hWndPhonEx, GW_HWNDNEXT);
再進入子窗體:
hWndPhonEx = GetWindow(hWndPhonEx, GW_CHILD);
然後就是循環檢查句柄了:
while (!IsFindWindow) { if (GetClassName(hWndPhonEx, szClassName, 100)) { IsFindWindow = TRUE; for (int i=0; i<ilen; i++) { if (szClassName[i] != szPhonEx[i]) { IsFindWindow = FALSE; } } if (IsFindWindow) { MessageBox(NULL, _T("Get HWND"), NULL, MB_OK); } else { hWndPhonEx = GetWindow(hWndPhonEx, GW_HWNDNEXT); a.Format(_T("Next --> %x"), hWndPhonEx); MessageBox(NULL, a, NULL, MB_OK); } } }
最後就是移動窗體了(例子中是PhonEx的今日插件)
MoveWindow(hWndPhonEx, 0, 630, 480, 76, TRUE);