2

MFC プログラムでウィンドウの作成をフックしたい。

それを行う方法はありますか?

4

1 に答える 1

1

SetWindowHookExを使用してCBTProcをインストールします。

ここにいくつかのサンプルコードがあります。プログラムの最初から呼び出すだけで、通知コードInstallHook()を監視できます。HCBT_CREATEWNDドキュメントで説明されているように、関数からゼロ以外を返すことにより、ウィンドウの作成をキャンセルできます。

LRESULT CALLBACK MyCbtHook(int nCode,  WPARAM wParam,  LPARAM lParam)
{
    switch(nCode)
    {
    case HCBT_CREATEWND:
        {
            HWND hWnd = (HWND)wParam;
            TRACE("A window is being created, HWND = %p\n", hWnd);
            break;
        }
    }

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

void InstallHook()
{
    SetWindowsHookEx(WH_CBT, MyCbtHook, 0, GetCurrentThreadId());
}
于 2013-07-15T12:16:08.980 に答える