簡體   English   中英

如何獲取任務欄MSTaskListWClass的HWND?

[英]How to get the HWND of the taskbar MSTaskListWClass?

我怎樣才能檢索MSTaskListWClass hWnd

我的意思是“運行應用程序”工具欄,它在任務欄中顯示每個 window 的按鈕。

在此處輸入圖像描述

我試圖通過以下方式獲得它:

HWND mstask = FindWindow(L"MSTaskListWClass", NULL);
DWORD err = GetLastError();

但是mstask返回null, err輸出0

FindWindowW僅檢索頂級 windows 的句柄。 不適用於兒童 windows。 所以需要首先搜索父 window -“Shell_TrayWnd”,然后使用EnumChildWindows

BOOL CALLBACK EnumChild(HWND hwnd, LPARAM lParam)
{
    WCHAR name[32];
    if (GetClassNameW(hwnd, name, _countof(name)) && !wcscmp(name, L"MSTaskListWClass"))
    {
        *(HWND*)lParam = hwnd;
        return FALSE;
    }

    return TRUE;
}

HWND GetMSTaskListW()
{
    HWND hwnd = 0;
    if (HWND hWndParent = FindWindowW(L"Shell_TrayWnd", 0))
    {
        EnumChildWindows(hWndParent, EnumChild, (LPARAM)&hwnd);
    }

    return hwnd;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM