Sendkeys ne fonctionne pas toujours

karibouh Messages postés 2 Date d'inscription samedi 18 février 2006 Statut Membre Dernière intervention 22 février 2006 - 18 févr. 2006 à 19:26
karibouh Messages postés 2 Date d'inscription samedi 18 février 2006 Statut Membre Dernière intervention 22 février 2006 - 22 févr. 2006 à 11:57
Bonjour,

je suis nouveau dans la programmation C# et j'espere que vous pourrez m'aider face à ce petit problème ...

j'essaie de piloter une application par l'envoie de commande sendKeys sur l'application.

En gros, sur un appui bouton de mon application, j'appele une méthode qui

- je récupère le handle de l'application cible,

- vérifie qu'elle est lancée

- la passe au premier plan

- envoie la commande.

- repasse mon application source au premier plan.



Ca marche, mais pas tout le temps ... et j'avoue que je ne vois pas du tout d'ou ca pourrait venir... et vous ?

j'ai mis la source des fois que vous voyez un truc qui cloche ...

Merci



IntPtr monHandle = FindWindow(config.WindowClass, config.WindowTitle);

If (monHandle == IntPtr.Zero)

{

MessageBox.Show("monAppli n'est pas lancée.");

return;

}

SetForegroundWindow(monHandle );

SetActiveWindow(monHandle );

SendKeys.Send(command);

SendKeys.Flush();

SetForegroundWindow(this.Handle);

2 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
19 févr. 2006 à 00:20
Salut, tu ne dis pas quel est le problème !? Je suppose que ça va trop vite..

// Exemple avec Notepad

private bool SendKeysToNotepad( string keys )
{
IntPtr hWnd = FindWindow( null, "Sans titre - Bloc-notes" );

if ( hWnd != IntPtr.Zero )
{
if ( SetForegroundWindow( hWnd ) )
{
System.Threading.Thread.Sleep( 500 );
SendKeys.SendWait( keys );
//SendKeys.Flush( );
SetForegroundWindow( this.Handle );


return true;
}
}


return false;
}
0
karibouh Messages postés 2 Date d'inscription samedi 18 février 2006 Statut Membre Dernière intervention 22 février 2006
22 févr. 2006 à 11:57
Bonjour Lutinore et merci pour ta réponse.
Le fait de mettre un Thread.sleep à l'air d'être la solution à mon problème.
(Mon problème était que l'execution fonctionnait mais pas tout le temps et que j'étais incapable de trouver ce qui faisait que ca marche ou pas...)
Je vais tester plus en profondeur, mais au premier abord, il me semble que tu as résolu mon problème.
Merci beaucoup !!!
0