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);