標準のEDITコンテキストメニュー(取り消し/コピー/編集/貼り付けなど)を取得するには、アプリケーション内にフックをインストールしています。私は自分のアプリケーションのための新しいメニュー項目を挿入する必要があります。フック内でHWNDからHMENUを取得
ウィンドウフックを設定しましたが、コンテキストメニューの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を取得する方法を知っている人はいますか?
おかげで、 ケビン
GetMenuは「menubars」のみです。AFAIK – Anders