繁体   English   中英

在数学输入面板(Windows 7)中模拟鼠标移动

[英]Simulating mouse move in Math Input Panel (Windows 7)

我想将我的手写数学符号识别应用程序与Windows 7中包含的Math Input Panel(MIP)进行比较。我有一个代表不同数学公式的记录的鼠标笔触库,我需要将它们发送到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时,一切都运行良好。

有谁知道如何解决?

我已经使用以下功能解决了该问题:

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

我称其为控制鼠标按钮的单击和鼠标移动,并且效果很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM