¿SendInput () no es igual a presionar la tecla manualmente en el teclado en C ++?

Quería escribir un código c ++ para emular presionar una tecla del teclado "A":

// Set up a generic keyboard event.
ip.type = INPUT_KEYBOARD;
ip.ki.wScan = 0; // hardware scan code for key
ip.ki.time = 0;
ip.ki.dwExtraInfo = 0;

// Press the "..." key
ip.ki.wVk = code; // virtual-key code for the "a" key
ip.ki.dwFlags = 0; // 0 for key press
SendInput(1, &ip, sizeof(INPUT));

// Release the "..." key
ip.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release
SendInput(1, &ip, sizeof(INPUT));

Funciona bien cuando lanzo otro programa y espero a que se ejecute mi programa, se hace clic en "A" y el primer programa reacciona a él. Pero encontré que en la otra aplicación mi acción se evitó de alguna manera (puedo presionar manualmente "A" en el teclado, pero el uso de mi programa no causa ninguna acción).

Entonces, ¿qué puedo hacer para hacer que presionar "A" del programa sea más idéntico a presionar manualmente "A"? (para que el segundo programa no reconozca que fue llamado desde el programa)?

No tengo el código fuente del segundo programa y no sé cómo reconoce que "A" no se presionó manualmente.

Estoy seguro de que la ventana que quiero reaccionar a mi código está en primer plano, recibe y bloquea mi clave (para que pueda decidir que el evento no proviene del usuario sino del programa).

Respuestas a la pregunta(3)

Su respuesta a la pregunta