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.