MUILIB

让UI设计师的思想自由飞翔

   :: 首页 :: 新随笔 ::  :: 聚合  :: 管理 ::
  33 随笔 :: 0 文章 :: 39 评论 :: 0 Trackbacks
HWND FindDesktopIconWnd()
{
    HWND hWndDesktop = NULL;
    HWND hProgMan = ::FindWindow(L"Progman", NULL);
    if (hProgMan)
    {
        HWND hShellDefView = ::FindWindowEx(hProgMan, NULL, L"SHELLDLL_DefView", NULL);
        if (hShellDefView) hWndDesktop = ::FindWindowEx(hShellDefView, NULL, L"SysListView32", NULL);
    }
    if (hWndDesktop) return hWndDesktop;

    HWND hwndWorkerW = NULL;
    HWND hShellDefView = NULL;
    HWND hwndDesktop = NULL;
    while (hwndDesktop == NULL)//必须存在桌面窗口层次  
    {
        hwndWorkerW = ::FindWindowEx(0, hwndWorkerW, L"WorkerW", NULL);//获得WorkerW类的窗口  
        if (hwndWorkerW == NULL) break;//未知错误

        hShellDefView = ::FindWindowEx(hwndWorkerW, NULL, L"SHELLDLL_DefView", NULL);
        if (hShellDefView == NULL) continue;

        hwndDesktop = hShellDefView;
        //hwndDesktop = ::FindWindowEx(hShellDefView, NULL, L"SysListView32", NULL);
        //hwndDesktop = ::FindWindowEx(hwndDesktop, NULL, L"SysHeader32", NULL);
    }

    return hwndDesktop;
}
posted on 2014-06-26 22:46 bukebushuo 阅读(205) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理