Блокировка перемещения курсора во время запуска автоматизации - PullRequest
0 голосов
/ 15 апреля 2019

Я пишу некоторые тесты автоматизации, используя белый каркас Teststack (C #, .net) для моего приложения WPF.Я хочу, чтобы любое движение курсора было заморожено во время выполнения тестов.Есть ли способ сделать это?

Я уже пробовал

public partial class NativeMethods
{
    [DllImport("user32.dll", SetLastError = true)]
    public static extern bool BlockInput(bool fBlockIt);
}

, но он не работает, так как мое приложение не работает с правами администратора

Я попробовал NativeMethods.BlockInput (true);

Я получаю исключение об отказе в доступе

1 Ответ

0 голосов
/ 15 апреля 2019

Я думаю, что вы можете использовать ClipCursor

[DllImport("user32.dll")]
    static extern void ClipCursor(ref System.Drawing.Rectangle rect);

    [DllImport("user32.dll")]
    static extern void ClipCursor(IntPtr rect);

    public MainWindow()
    {
        InitializeComponent();
        this.DataContext = this;
        this.Loaded += MainWindow_Loaded;
        this.MouseMove += Window_MouseMove;
    }

    void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
        this.WindowState = WindowState.Maximized;
        HideMouse();
    }
    private void Window_MouseMove(object sender, MouseEventArgs e)
    {
        HideMouse();
    }

    private void HideMouse()
    {
        System.Drawing.Rectangle r = new System.Drawing.Rectangle(0, 0, 0, 0);
        ClipCursor(ref r);
    }
...