Maison >développement back-end >C++ >Comment puis-je envoyer des clés à une application en arrière-plan dans .NET ?

Comment puis-je envoyer des clés à une application en arrière-plan dans .NET ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-04 09:52:35669parcourir

How Can I Send Keys to a Background Application in .NET?

Envoi de clés aux applications en arrière-plan : un guide complet

La tâche consistant à envoyer une clé spécifique (par exemple, "k") à une autre application , tel que le Bloc-notes, nécessite une compréhension plus approfondie de la gestion des processus dans .NET. Examinons le problème et ses solutions potentielles.

Pour envoyer des clés à une autre application, celle-ci doit être au premier plan. Dans le code donné, cette étape est tentée à l'aide de SetForegroundWindow. Cependant, l'implémentation peut nécessiter un affinement supplémentaire.

Pour garantir que le bloc-notes est bien la fenêtre active avant d'envoyer la clé, nous devons :

  • Utiliser Process.MainWindowHandle pour récupérer le handle de la fenêtre du bloc-notes.
  • Appelez SetForegroundWindow avec cette poignée pour faire du bloc-notes le premier plan application.

Voici une version améliorée du code :

[DllImport("User32.dll")]
static extern int SetForegroundWindow(IntPtr point);

Process p = Process.GetProcessesByName("notepad").FirstOrDefault();
if (p != null)
{
    IntPtr h = p.MainWindowHandle;
    SetForegroundWindow(h);
    SendKeys.SendWait("k");
}

Si le bloc-notes n'est pas encore exécuté, nous devons le démarrer et attendre qu'il soit prêt avant d'envoyer le clé :

Process p = Process.Start("notepad.exe");
p.WaitForInputIdle();
IntPtr h = p.MainWindowHandle;
SetForegroundWindow(h);
SendKeys.SendWait("k");

Il convient de noter que si le Bloc-notes est démarré avec des privilèges élevés (par exemple, en tant qu'administrateur) et que votre application ne l'est pas, le L’appel SetForegroundWindow peut ne pas fonctionner correctement. Dans de tels cas, explorez des méthodes alternatives ou ajustez les autorisations des applications en conséquence.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn