elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema al enviar combinación de teclas con PostMessage
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema al enviar combinación de teclas con PostMessage  (Leído 1,858 veces)
ramiro069

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Problema al enviar combinación de teclas con PostMessage
« en: 12 Octubre 2016, 16:19 pm »

Buenas, estoy intentando hacer un programa para enviar una combinación de teclas (Ctrl+Alt+F12) a un programa en segundo plano, para ello estoy usando la función PostMessage de la API de windows, el caso es que si envío solo F12 o Ctrl funciona (el ALT no) pero si intento usar una combinación de ambas no, el código que estoy usando es este:
Código:
HWND windowHandle = FindWindowA("Qt5QWindowIcon", NULL);   //Can’t find a proccess

    //Send a key
    if( windowHandle ) //This one fails
    {
               PostMessage(windowHandle, WM_SYSKEYDOWN, VK_CONTROL, 0);
               PostMessage(windowHandle, WM_SYSKEYDOWN, VK_MENU, 0);
               PostMessage(windowHandle, WM_KEYDOWN, VK_F12, 0);
               Sleep(1000);
               PostMessage(windowHandle, WM_KEYUP, VK_F12, 0);
               PostMessage(windowHandle, WM_SYSKEYUP, VK_MENU, 0);
               PostMessage(windowHandle, WM_SYSKEYUP, VK_CONTROL, 0);
    }else{
      cout << "No se ha encontrado la ventana!!" << endl;
    }


Por otro lado he intentado con keybd_event y envía bien las teclas, pero si tengo la ventana en primer plano (y no es lo que quiero)
Código:
       keybd_event(VK_CONTROL, 0x9d, 0, 0);
      keybd_event(VK_MENU, 0xb8, 0, 0);
      keybd_event(VK_F12, 0xd8, 0, 0);
      Sleep(1000);
      keybd_event(VK_F12, 0xd8, KEYEVENTF_KEYUP, 0);
      keybd_event(VK_MENU, 0xb8, KEYEVENTF_KEYUP, 0);
      keybd_event(VK_CONTROL, 0x9d, KEYEVENTF_KEYUP, 0);

Se que en el foro habéis hablado ya de estas funciones, pero no logro encontrar el problema de mi código, y simplemente agradeceros vuestra ayuda.


EDITO: Lo he conseguido solucionar, la manera correcta es la siguiente:
Código:
    if( windowHandle ) //This one fails
    {
               PostMessage(windowHandle, WM_SYSKEYDOWN, VK_CONTROL, 0x209d0000);
               PostMessage(windowHandle, WM_KEYDOWN, VK_F12, 0x00d80000);
               Sleep(1000);
               PostMessage(windowHandle, WM_KEYUP, VK_F12, 0xc0d80000);
               PostMessage(windowHandle, WM_SYSKEYUP, VK_CONTROL, 0xe09d0000);
    }else{
      cout << "No se ha encontrado la ventana!!" << endl;
    }

El problema eran los Lparams.
NOTA: La pulsación de la tecla ALT se realiza por medio del Lparam de WM_SYSKEYDOWN.


« Última modificación: 13 Octubre 2016, 01:36 am por ramiro069 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Combinacion de teclas a funcion
Programación Visual Basic
rubeng 4 2,046 Último mensaje 25 Mayo 2006, 02:54 am
por rubeng
combinacion de teclas en VB 6.0
Programación Visual Basic
lestat_misa 1 3,777 Último mensaje 13 Junio 2006, 04:32 am
por Nakp
Combinacion de teclas en Python!!!
Scripting
_maki_ 5 6,730 Último mensaje 17 Noviembre 2006, 21:17 pm
por SirLanceCC
Combinación de teclas en keybd_event
Programación Visual Basic
gulabyte 8 9,524 Último mensaje 3 Febrero 2009, 20:05 pm
por gulabyte
Ayuda! Simular combinacion de teclas a un juego
Programación General
RobertoKenT 0 2,825 Último mensaje 14 Septiembre 2010, 01:47 am
por RobertoKenT
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines