Red de conocimiento de abogados - Derecho de sociedades - Si no se usa dll en mfc, cómo establecer parámetros usando directamente SetWindowsHookEx en el programa principal para interceptar las operaciones de teclado de otras aplicaciones especificadas.

Si no se usa dll en mfc, cómo establecer parámetros usando directamente SetWindowsHookEx en el programa principal para interceptar las operaciones de teclado de otras aplicaciones especificadas.

Instalar el gancho del mouse

Las funciones utilizadas son:

SetWindowsHookExA() //Establecer el gancho

GetModuleHandle() //Obtener Mango del módulo

UnhookWindowsHookEx() //Cerrar el gancho

SetDlgItemText() ? //Establecer el texto de control

Las estructuras utilizadas son:

KBDLLHOOKSTRUCT

Paso 1: Definir en la parte superior de XXXXXDlg.cpp

#define?WH_KEYBOARD_LL ?13

typedef?struct?tagKBDLLHOOKSTRUCT?{

DWORD vkCode;

DWORD scanCode;

indicadores DWORD;

hora DWORD;

DWORD dwExtraInfo;

}?KBDLLHOOKSTRUCT,?FAR?*LPKBDLLHOOKSTRUCT,?*PKBDLLHOOKSTRUCT;

HHOOK?Teclado;

HWND?hwnd;

LRESULTADO ?CALLBACK ?LowLevelKeyboardProc(int?nCode, WPARAM?wParam, LPARAM?lParam)

{

//Estos son los códigos HOOK

LRESULT?lResult? =?CallNextHookEx (Keyboard,?nCode,?wParam,?lParam);

//PMSG?pmsg?=?(PMSG)lParam;

//En este momento pmsg- gt; el mensaje es Mensaje

CString?I;

I.Format(_T("Estado del teclado: d"), wParam);

SetDlgItemText(hwnd) , IDC_EDIT3, I);

KBDLLHOOKSTRUCT*?Pointer=(KBDLLHOOKSTRUCT*)lParam;

I.Format(_T("Código clave: d"), pointer-gt; vkCode );

SetDlgItemText(hwnd, IDC_EDIT4, I);

return?FALSE

}

Paso 2: Escritura de código:

hwnd=m_hWnd;

//Los pasos de respuesta para eventos de teclado son:

//Controlador de teclado-gt; Procesamiento de mensajes de teclado del sistema-gt; procesamiento de mensajes de proceso- gt; procesamiento de mensajes de ventana actual

//WH_KEYBOARD_LL se inserta antes del procesamiento de mensajes del teclado del sistema

//Y WH_KEYBOARD se inserta antes del procesamiento de mensajes de proceso actual.

// Entonces, si su WH_KEYBOARD?hook es correcto pero WH_KEYBOARD_LL?hook no puede obtener el resultado deseado, entonces la única posibilidad es que haya filtrado algunos mensajes del teclado que no deberían filtrarse.

¿Teclado?=?SetWindowsHookExA(WH_KEYBOARD_LL, LowLevelKeyboardProc, GetModuleHandle(NULL), NULL);

Paso 3: En la vista de clases XXXXXXDlg-gt; message-gt; /p>

DescolgarWindowsHookEx(teclado);