Имитация щелчка мыши и перемещения мыши в Windows 7 с помощью C # - PullRequest
1 голос
/ 10 января 2011

Я написал фрагмент кода для имитации щелчка мышью, который отлично работает в моей Vista.Но когда я проверил, что в Windows 7 не генерируется событие нажатия.Может кто-нибудь, пожалуйста, помогите?Я добавляю фрагмент кода ниже.Спасибо, Никиль

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


[Flags]
        public enum MouseEventFlags
        {
            LEFTDOWN = 0x00000002,
            LEFTUP = 0x00000004,
            MIDDLEDOWN = 0x00000020,
            MIDDLEUP = 0x00000040,
            MOVE = 0x00000001,
            ABSOLUTE = 0x00008000,
            RIGHTDOWN = 0x00000008,
            RIGHTUP = 0x00000010
        }

System.Windows.Forms.Cursor.Hide();
System.Windows.Forms.Cursor.Position = new System.Drawing.Point(xinc + rct.Left, yinc + rct.Top);

int X = System.Windows.Forms.Cursor.Position.X;
int y = System.Windows.Forms.Cursor.Position.Y;

mouse_event((int)(MouseEventFlags.LEFTDOWN), 0, 0, 0, 0);
mouse_event((int)(MouseEventFlags.LEFTUP), 0, 0, 0, 0);


System.Windows.Forms.Cursor.Position = new System.Drawing.Point(0, 0);
System.Windows.Forms.Cursor.Show();

Ответы [ 3 ]

9 голосов
/ 10 января 2011

Мой хрустальный шар говорит, что вы не просто обновились до Win7, вы также получили 64-битную версию. Ранее у вас была 32-разрядная версия Vista. Ваше объявление mouse_event () неверно. Последний аргумент - IntPtr, а не int.

Как мяч?

0 голосов
/ 11 января 2011

Трюк, который сработал для меня, это использование SetCursorPos с той же координатой перед вызовом mouse_event. Я также только что проверил следующее для работы (на winforms):

    public static void LeftClick(int x, int y)
    {
        Cursor.Position = new System.Drawing.Point(x, y); //<= fails without this
        mouse_event((int)(MouseEventFlags.LEFTDOWN), 0, 0, 0, 0);
        mouse_event((int)(MouseEventFlags.LEFTUP), 0, 0, 0, 0);
    }
0 голосов
/ 11 января 2011

Не уверен, поможет ли это вам, но вы смотрели на UI Automation? текст ссылки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...