как вы имитируете щелчок мыши, нажимая кнопку клавиатуры в C # - PullRequest
0 голосов
/ 03 августа 2011

Я пытался найти способ сделать щелчок мышью программным способом, но результаты, которые я нахожу, довольно тяжелые в зависимости от моего уровня.Я знаю, как позиционировать мышь и все, кроме щелчка.Я также знаю, что есть способ смоделировать нажатие клавиатуры с ключевыми событиями.Так что это заставило меня задуматься, есть ли способ сделать щелчок мыши нажатием клавиши клавиатуры?Я хочу сделать это, потому что я работаю над образовательным проектом, который показывает начинающим, как выполнять простые функции на компьютере, например, как создавать файл или открывать определенные программы, поэтому мне нужно щелкнуть мышью, чтобы работать на основе экраназа пределами моего приложения.Это возможно?вся помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 03 августа 2011

Это не ответ C #, но если вы пытаетесь автоматизировать только вещи для обучения, это может помочь. Вы можете захватить видео всех ваших действий и выделить щелчки мыши. Хорошее программное обеспечение для этого - студия Camtasia. Это платное программное обеспечение, но есть и другие бесплатные программы для записи экрана.

Если вы действительно хотите просто автоматизировать фактические щелчки мыши, попробуйте использовать Autoit http://www.autoitscript.com/site/autoit/

для анимации. Вы можете написать что угодно, от нажатия клавиш клавиатуры до щелчков мышью в любой области экрана.

В случае, если вы хотите испытать это, нажмите на любую позицию, все, что вам нужно сделать, это

MouseClick("primary", x-coordinate, y-coordinate, number-of-clicks) 
// number of clicks = 2 for double click
$pos = MouseGetPos()
$pos[0] // contains the x coordinate of current mouse pos
$pos[1] // contains the y coord of current position
0 голосов
/ 03 августа 2011

Вы можете симулировать щелчок мышью, используя следующий код

using System.Runtime.InteropServices;
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long 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 void DoMouseClick()
    {
        //Call the imported function with the cursor's current position
        int X = Cursor.Position.X;
        int Y = Cursor.Position.Y;
        mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
    }

mouse_event фактически выполняет щелчок мышью.

...