桌面程序嵌入桌面
在试用某些App时,发现有些App的窗口可以嵌入桌面,这样Win+D键的时候就可以看到
1、在Xp下通过FindWindow("Program
manager","progman")找到
2、在win7下这个方法找到的父窗口就不好用了。用spy++看了之后,写了下面一段代码 findDesktopIconWnd(),在xp和win7下都可以找到这个父窗口。子窗口再调用SetParent(child,parent)就可 以在桌面上看到了。
1 static BOOL enumUserWindowsCB(HWND hwnd, LPARAM lParam) 2 { 3 long wflags = GetWindowLong(hwnd, GWL_STYLE); 4 if (!(wflags & WS_VISIBLE)) return TRUE; 5 6 HWND sndWnd; 7 if (!(sndWnd = FindWindowEx(hwnd, NULL, L"SHELLDLL_DefView", NULL))) return TRUE; 8 9 HWND targetWnd; 10 if (!(targetWnd = FindWindowEx(sndWnd, NULL, L"SysListView32", L"FolderView"))) return TRUE; 11 12 HWND* resultHwnd = (HWND*)lParam; 13 *resultHwnd = targetWnd; 14 15 return FALSE; 16 } 17 18 HWND findDesktopIconWnd() 19 { 20 HWND resultHwnd = NULL; 21 EnumWindows((WNDENUMPROC)enumUserWindowsCB, (LPARAM)&resultHwnd); 22 return resultHwnd; 23 } 24 HWND desktopHwnd = findDesktopIconWnd(); 25 26 if (desktopHwnd) 27 { 28 SetParent(w.winId(), desktopHwnd); 29 }
相关文章:桌面上嵌入窗口(桌面日历)原理探索
demo下载:https://files.cnblogs.com/files/swarmbees/DesktopDock.zip

浙公网安备 33010602011771号