天天看点

将窗口嵌入桌面

在试用某些Ap时,发现有些Ap的窗口可以嵌入桌面,这样Win+D键的时候就可以看到,很方便。在网上搜索了一下,原理就是将窗口的父窗口设置成桌面。

这个父窗口在Xp下通过FindWindow("Program manager","progman")找到,但是在win7下这个方法找到的父窗口就不好用了。用spy++看了之后,写了下面一段代码findDesktopIconWnd(),在xp和win7下都可以找到这个父窗口。子窗口再调用SetParent(child,parent)就可以在桌面上看到了。

将窗口嵌入桌面

static BOOL enumUserWindowsCB(HWND hwnd,LPARAM lParam)

将窗口嵌入桌面

{

将窗口嵌入桌面

         long wflags = GetWindowLong(hwnd, GWL_STYLE);

将窗口嵌入桌面

         if(!(wflags & WS_VISIBLE)) return TRUE;

将窗口嵌入桌面

        HWND sndWnd;

将窗口嵌入桌面

         if( !(sndWnd=FindWindowEx(hwnd, NULL, L "SHELLDLL_DefView", NULL)) ) return TRUE;

将窗口嵌入桌面

        HWND targetWnd;

将窗口嵌入桌面

         if( !(targetWnd=FindWindowEx(sndWnd, NULL, L "SysListView32", L "FolderView")) ) return TRUE;

将窗口嵌入桌面

        HWND* resultHwnd = (HWND*)lParam;

将窗口嵌入桌面

        *resultHwnd = targetWnd;

将窗口嵌入桌面

         return FALSE;

将窗口嵌入桌面

}

将窗口嵌入桌面

HWND findDesktopIconWnd()

将窗口嵌入桌面

{

将窗口嵌入桌面

        HWND resultHwnd = NULL;

将窗口嵌入桌面

        EnumWindows((WNDENUMPROC)enumUserWindowsCB, (LPARAM)&resultHwnd);

将窗口嵌入桌面

         return resultHwnd;

将窗口嵌入桌面

}

转载于:https://blog.51cto.com/mypyg/263349