2011-01-31 16 views
5

Napisałem aplikację (wpf - czy Mono przetłumaczy to na Maca?), Którą chcę w jakiś sposób przenieść na Mac OS X. Ta aplikacja wymaga użycia user32.dll wykonać kliknięcie myszy (coś takiego):Używanie Mono do klikania myszy w języku 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); 

słyszałem mono jest przydatna do tworzenia aplikacji dla wielu platform - Czy istnieje sposób, że mogę to wykorzystać, aby mój kod kompatybilny z Mac?

Jeśli nie, czy istnieje sposób, w jaki mogę wywołać kliknięcie myszy przy użyciu odpowiednika komputera Macintosh w wersji Mac? A także sposób na wykrycie, czy program działa w systemie Windows lub Mac OS, aby wybrać, który kod ma zostać uruchomiony?

+0

próbujesz wygenerować przyciskiem myszy przed czymś w aplikacji, lub przeciwko innej aplikacji –

+0

Próbuję kliknij w innej aplikacji - moja aplikacja jest zminimalizowana podczas działania. – Jack

+0

Mono nie jest kompatybilny z WPF. Musisz użyć WinForms. Spędziłem dużo czasu, szukając Macintosha odpowiednika user32.dll, nie mogłem znaleźć "zarządzanej" wersji mouse_event. –

Odpowiedz

0

Mono nie obsługuje WPF i obecnie nie ma żadnych planów na jego obsługę. Sam zajrzałem do tego w weekend.

Jeśli zamierzasz używać mono z aplikacjami GUI, radzę użyć WinForm zamiast tego, co jest zaimplementowane w Mono.

Oto pełna lista Mono realizowane funkcje - http://mono-project.com/Compatibility

+0

To nie odpowiada na pytanie; pyta, czy istnieje równoważny sposób symulowania kliknięcia myszą w Mono na OS X, a nie czy możliwe jest portowanie przez aplikację WPF. –

1

Mono obecnie nie planuje obsługi WPF, patrz: Link.
Zapoznaj się z tym SO question, aby sprawdzić, czy to pomaga, a możesz zajrzeć do korzystania z Silverlight, ponieważ jest obsługiwany przez Microsoft na komputerze Mac.

1

także dzwonisz Win32 natywną funkcję - te nie są obsługiwane w systemie Mac. Najlepszym rozwiązaniem byłoby użycie wieloplatformowego kodu ścisłego .NET.

+0

Czy wiesz, co. NET-strict kod mogę użyć, aby wykonać kliknięcie myszą? Zajrzałem do tego wcześniej, ale nie mogłem znaleźć, jak to zrobić bez użycia user32.dll ... – Jack

+0

Jest to zdolność związana z systemem - musisz wywołać API bezpośrednio w systemie Windows, ponieważ nie ma dla niego implementacji .NET . Istnieje podobna możliwość dostępna dla komputerów Mac (http://stackoverflow.com/questions/1483657/performing-a-double-click-using-cgeventcreatemouseevent), ale nie jestem pewien, czy możesz go użyć w Mono. –

Powiązane problemy