Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

No se carga Hook de Teclado en Win 98 y Millenuium

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: No se carga Hook de Teclado en Win 98 y Millenuium Responder citando

Tengo el siguiente problema, un programa que hice, hace uso de un Hook de Teclado, este se carga perfectamente en Windows Xp, lo he probado en Windows )8 y Millenium, y me dice que no se pudo cargar el Hook.

Alguna Sugerencia,
Proporciono el enlace del proyecto completo, para descargarlo y por si
alguien lo quiere checar.

http://mx.geocities.com/mverastegui/descarga/lista-kbd5.zip

Gracias de antemano , por sus opiniones.

Miguel Ángel Verástegui Díaz.
_________________
Miguel Angel Verastegui Diaz
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

El tipo de hook que intentas usar (WH_KEYBOARD_LL) solo funciona en Windows NT/2000/XP. El mas parecido en Windows 95/98/ME es "WH_KEYBOARD", pero puede que no permita interceptar alguna de las teclas que necesitas, habría que probarlo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Voy a checar ese Evento, Gracias _LEO, tienes razon
(WH_KEYBOARD_LL) es de ambito global, Win2000/NT/XP pero tambien "WH_KEYBOARD", es de ambito global e inclusive se puede usar en un Hilo Thread. lo voy a probar.
Gracias
_________________
Miguel Angel Verastegui Diaz
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: ¿Alguna forma de leer la pulsacion de CTRl+Alt? Responder citando

ya solucione el problema de la carga del Hook en Win98 y millenium, oero me envia un mensajes de error al pulsar las teclas Ctrl o Alt.

¿de que otra Forma puedo saber la pulsasion de las teclas Ctrl+Alt?
Sin utilizar la estructura KBDLLHOOKSTRUCT de winuser.h para NT/XP


Anexo el codigo que me genera el error
Código:

LRESULT CALLBACK KeyHookLL(int nCode, WPARAM wp, LPARAM lp)
{
   KBDLLHOOKSTRUCT *pkh = (KBDLLHOOKSTRUCT *) lp;

   if (nCode==HC_ACTION) {
           int  bCtrlKeyDown =// GetKeyState(VK_CONTROL);
         GetAsyncKeyState(VK_CONTROL)>>((sizeof(SHORT) * 8) - 1);

//                if ((bCtrlKeyDown<0) && (pkh->flags & LLKHF_ALTDOWN) && (pkh->vkCode==char('P')))   /**/
             if (((bCtrlKeyDown<0) && (pkh->flags & LLKHF_ALTDOWN) &&  // en este punto me genera el error
 (pkh->vkCode==char('P'))) ||
                  ((pkh->flags & LLKHF_ALTDOWN) && (pkh->vkCode==char('T')))
                        && (wp==WM_SYSKEYDOWN||wp==WM_KEYDOWN))        /**/
                {
                 // && (pkh->vkCode==char('Z'))
                     hwnd = FindWindow(NULL,"Lista exe");
//                     ShowWindow(hwnd,SW_SHOW);
                    SetForegroundWindow(hwnd);
                     PostMessage(hwnd,WMAP_KEYBDHOOKMSG,wp,lp);
                     MessageBeep(0); // Pitido
                     //return 1;
                }

   }
   return CallNextHookEx(g_hookHandle, nCode, wp, lp);
}


Agrego la direccion para descargar el proyecto lista-kbd6

http://mx.geocities.com/mverastegui/descarga/lista-kbd6.zip

incluye imagenes las ventana de error que me aparecen al ejecutarlo en
Win ME

Mi objetivo es obtener la pulsacion de una combinacion de teclas CTRL+ALT+"x" de manera globar ya que quiero que responda mi aplicacion al generarse dicha combinacion.

Alguna sugerencia.
Gracias

Miguel Angel Verastegui Diaz.
_________________
Miguel Angel Verastegui Diaz
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

He modificado tu rutina del siguiente modo, funciona correctamente desde Windows95 a WindowsXP, siempre y cuando uses un hook de tipo WH_KEYBOARD.

- Al pulsar CTRL+ALT+X envía la pulsación a tu programa:
Código:
LRESULT CALLBACK KeyHookLL(int nCode, WPARAM wp, LPARAM lp)
{
    // Pulsación valida, no se esta soltando la tecla y no es una repetición
    if ((nCode == HC_ACTION) && !(HIWORD(lp) & (KF_UP|KF_REPEAT)))
    {
        // Estado de CTRL y ALT
        bool bCtrl = GetAsyncKeyState(VK_CONTROL) & 0x8000;
        bool bAlt  = GetAsyncKeyState(VK_MENU)    & 0x8000;

        // Combinación CTRL+ALT+X
        if (wp == static_cast<UINT>(VkKeyScan('x')) && bCtrl && bAlt)
        {
            hwnd = FindWindow(0, "Lista exe");
            SetForegroundWindow(hwnd);
            PostMessage(hwnd, WMAP_KEYBDHOOKMSG, wp, lp);
            MessageBeep(0); // Pitido

            return TRUE;
        }
    }

    return CallNextHookEx(g_hookHandle, nCode, wp, lp);
}


(En este caso no necesitas para nada el WH_KEYBOARD_LL, esto es un hook de más bajo nivel que el WH_KEYBOARD, permite interceptar algunas teclas del sistema antes que este y solo funciona en la familia NT)
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Por cierto, si solo necesitas que tu programa responda a esa combinación de teclas puedes hacerlo también sin usar hooks, usando la función del API: "RegisterHotKey":

https://cppbuilder.es/viewtopic.php?t=1205

En el ejemplo del enlace si quisieras usar la combinación CTRL+ALT+X usaríamos RegisterHotKey con los siguientes argumentos:

RegisterHotKey(Handle, idHotKey, MOD_CONTROL | MOD_ALT, VkKeyScan('x'))
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias, _Leo, funciona, muy bien!!!
Lo voy a poner en la Aplicacion que estoy desarrollando!!!
Cualquier resultado te lo haré saber.
Gracias.
_________________
Miguel Angel Verastegui Diaz
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Nuevos Enlaces Responder citando

Enlaces Rotos
http://mx.geocities.com/mverastegui/descarga/lista-kbd5.zip
http://mx.geocities.com/mverastegui/descarga/lista-kbd6.zip

Nuevos enlaces
http://dreamsoftmx.yolasite.com/resources/descargas/lista-kbd5.zip
http://dreamsoftmx.yolasite.com/resources/descargas/lista-kbd6.zip
_________________
Miguel Angel Verastegui Diaz
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.