Controler le pointeur d'un processus afin d'écrire dans une application externe.
cs_micam
Messages postés18Date d'inscriptiondimanche 16 novembre 2003StatutMembreDernière intervention15 juin 2009
-
11 janv. 2008 à 14:15
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 2012
-
11 janv. 2008 à 15:36
Bonjour, voici une petit problème pour les gros barbus du C#.
Je chercher à écrire dans le focus depuis mon applicaiton C# qui tourne en tache de fond.
Par exemple. Imaginons que mon appli C# possède une variable monMot de type string qui contient "toto" (soyons original).
Maintenant si je suis sur MicrosoftWord (ma page contient déja un bon gros paquet de caractères), j'aimerais commander à mon application C# d'écrire "toto" sur ma page MicrosoftWord à la position du curseur.
Pour ce fait, je suis parti du principe qu'il fallait récupérer le nom du focus ( application en premier plan, dans mon exemple :MicrosoftWord): ce que j'arrive à faire.
Puis dans un second temps d'utiliser le curseur présent sur la fenetre MicrosoftWord afin d'y ajouter les caractères présent dans la variable monMot (dans mon exemple "toto"). Je pense qu'il s'agit ici d'utiliser le handler (pointeur), mais je ne sais pas comment l'utiliser à bon essiant.
Voici mon code actuel:
//import de dll
System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern IntPtr GetForegroundWindow();
String monMot="toto";
//on récupère le focus
IntPtr handle = GetForegroundWindow();
//on récupère la liste des processus
Process[] myProcesses = Process.GetProcesses();
//on parcour l'ensemble des processus
foreach (Process myProcess in myProcesses)
{
//on cherche le focus dans la liste de processus
if (myProcess.MainWindowHandle == handle)
{
//ici, myProcess.ProcessName aura comme valeur "word"
?????????????Comment écrire dans mon fichier word???????
}
}
Voilà donc mon souci, si je n'ai pas été assez clair, n'hésitez pas à poser des questions.
Si je me goure comptement, et qu'il y a un autre moyen de remplir d'insérer "toto" dans mon fichier word n'hséitez pas à me le dire.
Merci d'avance pour ceux qui se sentiront de se pencher sur ce problème.
private void WriteToNotepad( string text )
{
// Cherche si un nouvelle fenêtre de notepad est déja ouverte.
IntPtr hWnd = FindWindow( null, WINDOW_NAME );
// Ouvre une nouvelle fenêtre de notepad.
if ( hWnd == IntPtr.Zero )
{
Process p = Process.Start( "notepad.exe" );
p.WaitForInputIdle( 500 );
hWnd = p.MainWindowHandle;
p.Close( );
p = null;
}