C ++: ¿Cómo configurar un nuevo wndProc para una aplicación de consola?

Si tengo una aplicación de consola con un manejador configurado como tal;

HWND hWnd = GetConsoleWindow();

Entonces, ¿cómo configuro un nuevo wndProc para la ventana?
Traté de usar

SetWindowLong(hWnd, GWL_WNDPROC, (LONG)conProc);

Con conProc siendo definido como

LRESULT CALLBACK conProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch(msg)
    {
        case WM_NCHITTEST:
            return HTCAPTION;
    }
    return DefWindowProc(hWnd, msg, wParam, lParam );
}

Pero no funciona y dice "Código de error: 5 - Acceso denegado" enGetLastError()

Entiendo que es bastante difícil modificar la aplicación de la consola de esta manera, ya que es una aplicación csrss.exe y todo eso, pero todavía me gustaría intentarlo ... Gracias.

Respuestas a la pregunta(2)

Su respuesta a la pregunta