2010-07-01 4 views
2

Je voudrais comparer mon application pour la reconnaissance des symboles mathématiques manuscrits avec le tableau de saisie mathématique (MIP) contenu dans Windows 7. J'ai une bibliothèque de traits de souris enregistrés représentant différents mathématiques formules et je dois les envoyer au MIP pour mesurer sa performance.Simulation du déplacement de la souris dans le panneau de saisie mathématique (Windows 7)

J'ai essayé de simuler le déplacement de la souris mais cela ne fonctionne pas.

Voici les constantes et les méthodes importées que j'utilise:

const UInt32 MOUSEEVENTF_LEFTDOWN = 0x0002; 
const UInt32 MOUSEEVENTF_LEFTUP = 0x0004; 

[DllImport("user32.dll", CharSet = CharSet.Unicode)] 
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); 

[DllImport("user32.dll")] 
[return: MarshalAs(UnmanagedType.Bool)] 
public static extern bool SetForegroundWindow(IntPtr hWnd); 

[DllImport("user32.dll")] 
static extern void mouse_event(UInt32 dwFlags, UInt32 dx, UInt32 dy, UInt32 dwData, UIntPtr dwExtraInfo); 

Et c'est le code lui-même:

IntPtr windowHandle = FindWindow("MathInput_Window", ""); 
SetForegroundWindow(windowHandle); 

Cursor.Position = new Point(600, 700); 
mouse_event(MOUSEEVENTF_LEFTDOWN, 600, 700, 0, UIntPtr.Zero); 

for (int x = 600; x <= 650; x++) 
{ 
    Cursor.Position = new Point(x, 700); 
} 

for (int y = 700; y <= 750; y++) 
{ 
    Cursor.Position = new Point(650, y); 
} 

mouse_event(MOUSEEVENTF_LEFTUP, 650, 750, 0, UIntPtr.Zero); 

Mais la seule chose que je reçois est un seul point à la position [600700] . Le plus drôle est que lorsque j'utilise MSPaint au lieu de MIP, tout fonctionne parfaitement.

Quelqu'un at-il une idée de la façon dont il pourrait être résolu?

Répondre

1

J'ai déjà résolu le problème en utilisant la fonction suivante:

[DllImport("user32.dll", SetLastError = true)] 
static extern uint SendInput(uint nInputs, ref INPUT pInputs, int cbSize); 

Je l'appelle à contrôler les deux clics de souris et bouton de la souris se déplace et il fonctionne parfaitement.

Questions connexes