Получить HMENU от HWND в хуке

Я устанавливаю ловушку в своем приложении, чтобы получить стандартное контекстное меню EDIT (с отменой/копированием/редактированием/вставкой/и т. д.). Мне нужно вставить новый пункт меню для моего приложения.

Я установил крючок Windows, но не могу получить HMENU для контекстного меню. Вот где я установил крючок:

g_hHook = SetWindowsHookEx(WH_CALLWNDPROC, HookCallWndProc, NULL, GetCurrentThreadId());

Вот моя функция обратного вызова:

LRESULT CALLBACK HookCallWndProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    if (nCode == HC_ACTION)
    {
        LPCWPSTRUCT cwps = (LPCWPSTRUCT)lParam;
        switch(cwps->message)
        {
            case WM_CREATE:
            {
                WCHAR szClass[128];
                GetClassName(cwps->hwnd, szClass, 127);

                if (wcscmp(szClass, L"#32768") == 0)
                {
                    LPCREATESTRUCT lpcs = (LPCREATESTRUCT)cwps->lParam;
                    HMENU hMenu = GetMenu(cwps->hwnd);
                    // hMenu is 0x0

                    //MENUINFO info;

                    //ZeroMemory(&info, sizeof(MENUINFO));
                    //info.cbSize = sizeof(info);
                    //GetMenuInfo(hMenu, &info);

                    MessageBox(NULL, L"Test", L"Test", NULL);
                }
                break;
            }
        }
    }

    return CallNextHookEx(g_hHook, nCode, wParam, lParam);
}

Я также пытался установить хук с помощью WH_CALLWNDPROCRET, но этот даже не захватывает сообщение WM_CREATE для меню.

Кто-нибудь знает, как получить HMENU для этой конкретной ситуации?

Спасибо, Кевин


person jubican    schedule 08.01.2012    source источник
comment
GetMenu предназначен только для меню, AFAIK   -  person Anders    schedule 09.01.2012


Ответы (1)