Pour simuler une frappe de touche tu dois envoyer des messages par PostMessage().
Normalement les messages sont dans l'ordre d'evénement : WM_KEYDOWN , WM_KEYUP et WM_CHAR
mais si la touche ALT est appuyée cela devient une commande "systeme" les evenements sont :
WM_SYSKEYDOWN, WM_SYSKEYUP, WM_SYSCHAR
l'evenement en WM_xCHAR n'est envoyé que si la touche est un caractere alphanumerique avec un character code (ansi, unicode). Donc pas dans le cas d'une touche fonction comme F1
Ce que tu dois faire reellement dépend de la fonction qui va traiter le message recu. Normalement les actions s'executent au relaché de la touche ou du bouton souris. peut etre qu'un simple WM_SYSKEYUP suffit (a verifier).
Dans les messages WM_xKEYx le code touche est un "Virtual-Key Code" différent pour chaque touche. Donc faut envoyer un message pour la touche CTRL et un autre pour F1 :
PostMessage(NULL, WM_SYSKEYDOWN, VK_CONTROL, NULL); // remarque que je ne traite pas le lParam ca me semble pas utile
PostMessage(NULL, WM_SYSKEYDOWN, VK_F1, NULL);
PostMessage(NULL, WM_SYSKEYUP, VK_F1, NULL);
PostMessage(NULL, WM_SYSKEYUP, VK_CONTROL, NULL);