Injection clique gauche ?

Injection clique gauche ? - C#/.NET managed - Programmation

Marsh Posté le 03-08-2010 à 23:12:12    

Bonjour,  
 
J'aimerai créer un programme qui puisse générer la saisi d'une touche "f" ou un clique sur des coordonnées X-Y sans devoir avoir la fenêtre en foreground.  
 
J'étais parti sur ça au début pour générer une saisi de caractère :  
 
foundwindow()  
SetForegroundWindow(monwindows);
SendKeys.SendWait("f" );              
 
Cela fonctionne sauf qu'en gros, ça va mettre l'application "monwindows" en avant pour pouvoir saisir "f".  
 
Moi ce que je veux c'est que ça ne switch pas d'application, une sorte d'injection ?  
 
Vous voyez ? :)  
               
           

Reply

Marsh Posté le 03-08-2010 à 23:12:12   

Reply

Marsh Posté le 04-08-2010 à 14:43:22    

Ok merci pour la piste mais j'suis une total sous merde et j'arrive pas à me créer un bout de code complet qui puisse envoyer la touche "f" à mon application "notepad"...

Reply

Marsh Posté le 05-08-2010 à 11:55:24    

Coucou merci pour ta patience, j'ai testé le programme qui fonctionne bien, il saisi "hello" dans mon notepad. Maintenant quand je met "Word" a la place de notepad par exemple à la place ça ne fonctionne pas :[
 
Il y a une partie du code que je ne comprend pas en fait  
 
 

Reply

Marsh Posté le 05-08-2010 à 12:18:06    

En gros c'est pas vraiment sur word mais world of warcraft, le procecus s'appeller Wow.exe et la fenetre World of Warcraft.  
Mais ça ne saisi pas hello :( Aucune réaction.


Message édité par anycee le 05-08-2010 à 12:20:14
Reply

Marsh Posté le 05-08-2010 à 12:31:34    

 Process[] procs = Process.GetProcessesByName("Wow" );
        foreach(Process proc in procs)
        {
           // look for untitled notepad window
            if (proc.MainWindowTitle == "World of Warcraft" )
            {
                // get handle to Notepad's edit window
                IntPtr hWnd = FindWindowEx(proc.MainWindowHandle, IntPtr.Zero, "edit", null);
                // post "hello" to notepad
                string s = "f";
                for (int i = 0; i < s.Length; i++)
                {
                    if (PostMessage(hWnd, WM_KEYDOWN, VkKeyScan(s[i]), 0) == true) { MessageBox.Show("okay" + hWnd, "okay" + hWnd, MessageBoxButtons.OK, MessageBoxIcon.Error); }
                    else
                    {
                        MessageBox.Show("erreur postmessage" + hWnd, "erreur postmessage" + hWnd, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                break;
            }
            else { MessageBox.Show("Procecuss pas trouvé", "Procecuss pas trouvé", MessageBoxButtons.OK, MessageBoxIcon.Error); }
        }
 
 
J'ai test ceci, si je change "World of Warcraft" par un truc bidon, il me met bien que le processus n'existe pas, j'en conclu donc qu'il trouve bien le procecuss world of warcraft, puis le booleen me retourne bien true donc a priori le postmessage a reussi, sauf que rien ne se passe dans le processus. J'ai du loupé quelque chose :$  
 
Merci pour ta patience :)

Reply

Marsh Posté le 05-08-2010 à 12:36:17    

bah oué, string s ="f"

Reply

Marsh Posté le 05-08-2010 à 12:44:21    

Ceci dit, avec Word ça ne marche pas non plus.
 
hWnd renvoi 0 quand c'est World of warcraft en procécus et 34455 quand c'est notepad, le probleme viens de là je pense :D je cherche ...


Message édité par anycee le 05-08-2010 à 12:51:18
Reply

Marsh Posté le 05-08-2010 à 15:25:24    

J'ai reussi avec postmessage :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed