2011-01-31 9 views
5

Ho scritto un'applicazione (wpf - Mono tradurrò questo per un Mac?) Che desidero in qualche modo trasferire su Mac OS X. Questa applicazione implica l'uso di user32.dll per eseguire un clic del mouse (qualcosa di simile):Utilizzo di Mono per fare clic con il mouse in 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); 

ho sentito Mono è utile per fare applicazioni per più piattaforme - c'è un modo che posso usare questo per fare il mio codice compatibile con un Mac?

In caso contrario, c'è un modo per richiamare un clic del mouse utilizzando l'equivalente Mac di user32.dll? E un modo per rilevare se il programma è in esecuzione in Windows o Mac OS per scegliere quale bit di codice eseguire?

+0

stai cercando di generare il clic del mouse contro qualcosa nella vostra applicazione, o contro un'altra applicazione –

+0

che sto cercando di fare clic in un'altra applicazione - la mia app è ridotta al minimo durante l'esecuzione. – Jack

+0

Mono non è compatibile con WPF. È necessario utilizzare WinForms. Ho trascorso molto tempo a cercare su google un equivalente Mac di user32.dll, non sono riuscito a trovare una versione "gestita" di mouse_event. –

risposta

0

Mono non supporta WPF e al momento non ha piani per supportarlo. Ho esaminato questo nel fine settimana me stesso.

Se si intende utilizzare mono con applicazioni GUI, si consiglia di utilizzare WinForms poiché è implementato in Mono.

Ecco l'elenco completo di Mono implementato caratteristiche - http://mono-project.com/Compatibility

+0

Questo non risponde alla domanda; sta chiedendo se c'è un modo equivalente per simulare un clic del mouse usando Mono su OS X, non se sia possibile effettuare il porting su un'applicazione WPF. –

1

Attualmente Mono non prevede di supportare WPF, vedere Link.
Dai un'occhiata a questo SO question per vedere se è utile e potresti voler utilizzare Silverlight poiché è supportato da Microsoft sul Mac.

1

Inoltre si sta chiamando una funzione nativa Win32 - quelli che non sono supportati su Mac. La soluzione migliore sarebbe utilizzare il codice rigoroso .NET multipiattaforma.

+0

Sai quale codice .NET-strict posso usare per eseguire un clic del mouse? Ho esaminato in precedenza, ma non riuscivo a trovare come farlo senza utilizzare user32.dll ... – Jack

+0

È una capacità legata al sistema - devi richiamare l'API direttamente in Windows perché non esiste alcuna implementazione .NET per esso . Sono disponibili funzionalità simili per Mac (http://stackoverflow.com/questions/1483657/performing-a-double-click-using-cgeventcreatemouseevent) ma non sono sicuro che tu possa utilizzarlo in Mono. –

Problemi correlati