Maison >développement back-end >C++ >Comment puis-je envoyer de manière fiable une entrée clavier à une autre application ?
Comment envoyer une clé à une autre application : un guide amélioré
L'envoi de clés à d'autres applications est un aspect fondamental de l'automatisation. Bien que le code fourni tente de le faire, il est confronté à certains défis.
Problème :
Le code d'origine ne parvient pas à envoyer les clés au Bloc-notes car il n'active pas correctement le application. La définition de la fenêtre de premier plan est cruciale pour que les frappes soient reçues par le programme souhaité.
Solution :
Pour envoyer avec succès une clé au Bloc-notes, le code doit d'abord garantir que l'application est active. Ceci peut être réalisé en utilisant la fonction SetForegroundWindow avec le MainWindowHandle du processus cible. Le code amélioré ci-dessous le démontre :
// import SetForegroundWindow [DllImport("User32.dll")] static extern int SetForegroundWindow(IntPtr point); private void SendKey() { Process p = Process.GetProcessesByName("notepad").FirstOrDefault(); if (p != null) { IntPtr h = p.MainWindowHandle; SetForegroundWindow(h); SendKeys.SendWait("k"); } }
Envoi en arrière-plan :
Il n'est pas possible d'envoyer des clés à une application en arrière-plan sans l'activer au préalable. Le code fourni ne prend pas en charge l'envoi de clés aux processus en arrière-plan. Si le Bloc-notes n'est pas actif, les frappes seront perdues.
Applications non-administrateur :
Dans les cas où le Bloc-notes s'exécute en tant qu'administrateur et que l'application d'envoi ne l'est pas, le code peut échouer. En effet, les processus élevés ont un accès restreint aux applications non élevées. Pour résoudre ce problème, l'application d'envoi doit également s'exécuter en tant qu'administrateur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!