Skocz do zawartości

    Zamknięty [C#/C++] Klasa do symulacji akcji myszki


    Ogen Dogen
     Udostępnij

    Rekomendowane odpowiedzi

    • Cała zawartość 2
    • Temat został założony
    • Ostatnia odpowiedź

    Top użytkownicy w tym temacie

    Najpopularniejsze posty

    Moja klasa w C# do symulacji różnych akcji myszki w systemach Windows, której użyłem do pewnego projektu. Udostępniam, bo nie widziałem w sieci takiego gotowego narzędzia. Wszystkie metody są statycz

    Moja klasa w C# do symulacji różnych akcji myszki w systemach Windows, której użyłem do pewnego projektu. Udostępniam, bo nie widziałem w sieci takiego gotowego narzędzia.

    Wszystkie metody są statyczne tzn. nie trzeba tworzyć obiektu, aby ich użyć. Większość funkcji jest importowane z WinAPI, zatem:

    • Zadziała nawet na Windows 2000 / XP.
    • Można tej klasy używać w C++, po drobnych modyfikacjach składni, bez importowania funkcji. (nagłówek windows.h)
    using System.Windows.Forms;
    using System.Drawing;
    
    namespace my_program
    {
        public class MyMouse
        {
            [System.Runtime.InteropServices.DllImport("user32.dll")]
            public static extern bool SetCursorPos(int x, int y);
    
            [System.Runtime.InteropServices.DllImport("user32.dll")]
            public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
    
            private const int MOUSEEVENTF_LEFTDOWN = 0x02;
            private const int MOUSEEVENTF_LEFTUP = 0x04;
            private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
            private const int MOUSEEVENTF_RIGHTUP = 0x10;
    
            public static void LeftMouseClick()
            {
                mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
                mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
            }
    
            public static void LeftDoubleClick()
            {
                LeftMouseClick();
                LeftMouseClick();
            }
    
            public static void RightMouseClick()
            {
                mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0);
                mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0);
            }
    
            public static void DragNDrop(int dragx, int dragy, int dropx, int dropy)
            {
                SetCursorPos(dragx, dragy);
                mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
                SetCursorPos(dropx, dropy);
                mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
                mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
            }
    
            public static void GetCursorPos(out int x, out int y)
            {
                x = Cursor.Position.X;
                y = Cursor.Position.Y;
            }
    
            public static Point GetCursorPos()
            {
                return Cursor.Position;
            }
        }
    }
    
    

    Zakładając, że klasa jest w tej samej przestrzeni nazw co plik źródłowy w którym chcemy jej użyć, możemy jej użyć w przykładowy sposób:

    MyMouse.SetCursorPos(300,300);
    MyMouse.LeftMouseClick();
    MyMouse.DragNDrop(100,100,200,200);
    
    Odnośnik do komentarza
    Udostępnij na innych stronach

    • 4 tygodnie później...
    Hej! Nie widzisz zawartości tego postu?
    Zaloguj się lub Zarejestruj nowe konto, aby korzystać ze wszystkich dostępnych funkcji!
    Odnośnik do komentarza
    Udostępnij na innych stronach

    Gość
    Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
     Udostępnij

    ×
    ×
    • Dodaj nową pozycję...
    Przeglądasz forum jako gość.
    Nie posiadasz dostępu do niektórych treści i funkcji!