Windows Hook для отлова WM_MDITILE (используя старый добрый C ++) - PullRequest
0 голосов
/ 25 марта 2011

Я знаю, что все собираются на большую мобильную или веб-работу.Ну, я застрял здесь на каком-то старом добром C ++.Вот что меня беспокоит.

Я хочу, чтобы мое приложение делало определенную вещь, когда пользователь нажимает меню «Tile Vertical» в другом приложении (в другом процессе).(Многие приложения имеют меню «Windows», а под ним находится подменю «Tile Vertical»).Я предполагаю, что мне нужно настроить глобальный хук, используя SetWindowsHookEx.Я попытался сделать это с помощью «WH_CALLWNDPROC» и смог подключить только сообщения «в процессе», а не «вне процесса».Я также пробовал WH_GETMESSAGE.Я попытался поймать WM_SIZE, который также не работал вне процесса.На самом деле, даже в процессе, WM_SIZE не работал на всех окнах, только на некоторых из них.

Итак, теперь есть несколько вопросов:

1- Каков правильный тип крючка (WH_CALLWNDPROC или WH_GETMESSAGE или, возможно, один из других типов крючков, которые можно использовать)?

2- Как мне получить его для получения сообщений о процессе?

3- Любые советы, где можно получить образец кода ловушки для WM_MDITILE?

4- Я пытался сделатьхук клавиатуры и это сработало, почему это не работает?

5 - Я использую Win 32 DLL с кодом DllMain ниже.Что-то не так?

HINSTANCE hinst;

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        //
        // Capture the application instance of this module to pass to
        // hook initialization.
        //
        if (hinst == NULL)
        {
            hinst = hModule;
        }

    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }

    return TRUE;
}

Любые советы или предложения?

Спасибо

1 Ответ

0 голосов
/ 25 марта 2011

Может быть, вам стоит попробовать WH_MSGFILTER или WH_SYSMSGFILTER? Похоже, что эти идентификаторы предназначены для мониторинга сообщений, сгенерированных в результате события ввода в диалоговом окне, окне сообщений, меню или полосе прокрутки.

Для более подробной информации обратитесь по ссылке ниже:

http://msdn.microsoft.com/en-us/library/ms644990(v=vs.85).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...