2011-01-31 19 views
5

He escrito una aplicación (wpf - ¿Mono traducirá esto para Mac?) Que de alguna manera quiero transferir a Mac OS X. Esta aplicación implica el uso de user32.dll para realizar un clic del ratón (algo así):Usando Mono para hacer clic en el mouse en C# - Mac OS

[DllImport("user32.dll")] 
    static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo); 
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); 
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); 

he oído Mono es útil para hacer aplicaciones para múltiples plataformas - hay una manera que puedo usar esto para hacer mi código compatible con un Mac?

Si no, ¿hay alguna manera de que pueda invocar un clic del mouse usando el equivalente Mac de user32.dll? ¿Y una forma de detectar si el programa se está ejecutando en Windows o Mac OS para elegir qué bit de código ejecutar?

+0

¿Estás tratando de generar el clic del ratón en contra de algo en su aplicación, o en contra de otra aplicación –

+0

que estoy tratando de hacer clic en otra aplicación - mi aplicación se minimiza mientras se ejecuta. – Jack

+0

Mono no es compatible con WPF. Necesita usar WinForms. He pasado mucho tiempo buscando en Google un equivalente Mac de user32.dll, no he podido encontrar una versión "administrada" de mouse_event. –

Respuesta

0

Mono no es compatible con WPF y actualmente no tiene planes futuros para admitirlo. Lo investigué el fin de semana yo mismo.

Si va a utilizar mono con aplicaciones de GUI, le aconsejo utilizar WinForms en cambio, ya que esto se implementa en Mono.

Aquí está la lista completa de Mono implementa características - http://mono-project.com/Compatibility

+0

Esto no responde la pregunta; pregunta si hay una forma equivalente de simular un clic del mouse con Mono en OS X, no si es posible realizar un puerto sobre una aplicación WPF. –

1

Mono actualmente no planea admitir WPF ver Link.
Eche un vistazo a este SO question para ver si le sirve de ayuda y es posible que desee examinar el uso de Silverlight ya que es compatible con Microsoft en la Mac.

1

También se llama a una función nativa de Win32 - los que no son compatibles con Mac. Su mejor opción sería usar código multiplataforma .NET-strict.

+0

¿Sabe qué código .NET-strict puedo usar para hacer clic con el mouse? Lo he analizado antes, pero no he podido encontrar cómo hacerlo sin usar user32.dll ... – Jack

+0

Es una función vinculada al sistema; debe invocar la API directamente en Windows porque no hay implementación de .NET para ella. . Hay una capacidad similar disponible para Mac (http://stackoverflow.com/questions/1483657/performing-a-double-click-using-cgeventcreatemouseevent) pero no estoy seguro de que pueda usarla en Mono. –

Cuestiones relacionadas