尝试模拟鼠标单击/拖动
所以我试图模拟鼠标左键单击和鼠标左键释放来进行一些自动拖放。
它目前在 C# Winforms 中(是的,winforms :|)并且有点笨拙。
基本上,一旦发送“点击”,我希望它根据 Kinect 输入更新光标位置。 Kinect 方面的事情很好,但我不确定如何确定按钮是否仍然按下。
这是我当前正在使用的代码+一些伪代码,以帮助更好地解释自己(do while)。
class MouseImpersonator
{
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
private static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);
private const int leftDown = 0x02;
private const int leftUp = 0x04;
public static void Grab(int xPos, int yPos)
{
Cursor.Position = new Point(xPos + 25, yPos + 25);
mouse_event(leftDown, (uint) xPos, (uint) yPos, 0, 0);
//do
//{
//Cursor.Position = new Point(KinectSettings.movement.LeftHandX, KinectSettings.movement.LeftHandY);
//} while (the left mouse button is still clicked);
}
public static void Release(int xPos, int yPos)
{
Cursor.Position = new Point(xPos + 25, yPos + 25);
mouse_event(leftUp, (uint) xPos, (uint) yPos, 0, 0);
}
}
我在 google 上搜索了一下,除了 WPF 等效项之外找不到任何我需要的东西: http://msdn.microsoft.com/en-us/library/system.windows.input.mouse.aspx
我有点超出了我的深度,但任何帮助都是非常感谢。
卢卡斯.
-
-
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
最简单的答案实际上是使用 bool 并检查发生了什么。
我在一个新线程上启动它,因此它不会破坏其他所有内容。
理想情况下,你应该稍微整理一下。
The Easiest answer was infact to use a bool and just check to see what's going on.
I started it on a new thread so it didn't break everything else.
Idealy you'd tidy this up a little bit.
如果鼠标左键按下,则以下代码应返回 true;如果按下,则返回 false,Control 为 System.Windows.Forms.Control:
可以找到此内容的 ps 文档 在 MSDN 上。
The following code should return true if the left mouse button is down, false if it is up, Control being System.Windows.Forms.Control:
p.s. documentation for this can be found on MSDN here.