2010-07-16 13 views
0

Existe-t-il un moyen d'envoyer des événements de souris à une autre fenêtre dans Windows 7?
que je faisais ceci:
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo); Envoi d'événements de souris à une autre fenêtre, C# sous Win 7

Mais cela ne semble pas fonctionner plus dans Win7.
Des idées?

Merci.

Répondre

5

Ne fonctionne pas comment? Une chose qui pourrait être pertinente (c'est difficile parce que vous avez donné si peu de détails) est que les applications non élevées (sous UAC) ne sont pas autorisées à communiquer avec les applications surélevées. Donc, si une application est élevée et une non, vous diriez que cela ne semble pas fonctionner. Mais vous ne pouvez pas corriger cela en changeant l'API que vous utilisez.

2

La raison la plus probable que cela ne fonctionne pas pour vous est le fait que la signature P/Invoke que vous utilisez est incorrecte. Vous avez spécifié les arguments long qui dans .NET représente un entier 64 bits. Le Win32 API decleration a les arguments définis en tant que DWORD, qui représente des entiers de 32 bits, ce qui entraînera un déséquilibre de pile. Changez votre signature à la suivante et vous devriez avoir plus de chance.

[DllImport("user32.dll")] 
public static extern void mouse_event(Int32 dwFlags, Int32 dx, Int32 dy, Int32 cButtons, Int32 dwExtraInfo); 

En outre, vous devriez considérer le point de Kate et cela pourrait également avoir une incidence sur vos résultats une fois la signature fixée.