Имитация движения мыши на панели ввода Math (Windows 7) - PullRequest
2 голосов
/ 01 июля 2010

Я хотел бы сравнить свое приложение для распознавания рукописных математических символов с Математической панелью ввода (MIP), содержащейся в Windows 7. У меня есть библиотека записанных движений мыши, представляющих различные математические формулы, и мне нужно отправить их в MIP измерить его производительность.

Я пытался смоделировать движение мыши, но оно не работает.

Вот константы и импортированные методы, которые я использую:

const UInt32 MOUSEEVENTF_LEFTDOWN = 0x0002;
const UInt32 MOUSEEVENTF_LEFTUP = 0x0004;

[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool SetForegroundWindow(IntPtr hWnd);

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

И это сам код:

IntPtr windowHandle = FindWindow("MathInput_Window", "");
SetForegroundWindow(windowHandle);

Cursor.Position = new Point(600, 700);
mouse_event(MOUSEEVENTF_LEFTDOWN, 600, 700, 0, UIntPtr.Zero);

for (int x = 600; x <= 650; x++)
{
    Cursor.Position = new Point(x, 700);
}

for (int y = 700; y <= 750; y++)
{
    Cursor.Position = new Point(650, y);
}

mouse_event(MOUSEEVENTF_LEFTUP, 650, 750, 0, UIntPtr.Zero);

Но единственное, что я получаю, - это одна точка в позиции [600,700]. Самое смешное, что когда я использую MSPaint вместо MIP, все работает отлично.

Кто-нибудь знает, как это можно решить?

1 Ответ

1 голос
/ 01 июля 2010

Я уже решил проблему, используя следующую функцию:

[DllImport("user32.dll", SetLastError = true)]
static extern uint SendInput(uint nInputs, ref INPUT pInputs, int cbSize);

Я вызываю его, чтобы контролировать как щелчки мышью, так и движения мыши, и она отлично работает.

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