导演鼠标事件函数[DllImport(QUOT; user32.dll中")单击,双击 [英] Directing mouse events [DllImport("user32.dll")] click, double click

查看:370
本文介绍了导演鼠标事件函数[DllImport(QUOT; user32.dll中")单击,双击的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试过
函数[DllImport(user32.dll中)]
静态的extern BOOL SetCursorPos(INT X,int y)对;



和它的作品非常精美,将光标移动到所需的点。我从来没有尝试过这样那样一个DLL导入之前,但它的工作原理:)。不过,我想要更多,我可以提取什么呢?
我主要是想使双击,单击或使用选装车轮没有任何鼠标输入,只需将代码中,我该怎么办呢?我怎么能检查还有什么是包含在user32dll?



感谢名单


解决方案

 函数[DllImport(user32.dll中,字符集= CharSet.Auto,CallingConvention = CallingConvention.StdCall)] 
公共静态外部无效mouse_event(UINT dwFlags中,UINT DX, DY UINT,UINT cButtons,UIntPtr dwExtraInfo);
私人常量UINT MOUSEEVENTF_LEFTDOWN = 0×02;
私人常量UINT MOUSEEVENTF_LEFTUP = 0×04;
私人常量UINT MOUSEEVENTF_RIGHTDOWN = 0x08的;
私人常量UINT MOUSEEVENTF_RIGHTUP = 0×10;

您应该导入和定义这些常数的使用Win32API的鼠标工作



使用方法是下面做的鼠标操作的

 无效sendMouseRightclick(点p)
{
mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP,的pX,PY,0,0);
}

空隙sendMouseDoubleClick(点P)
{
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,p.X,p.Y,0,0);

的Thread.Sleep(150);

mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,p.X,p.Y,0,0);
}

空隙sendMouseRightDoubleClick(点P)
{
mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP,p.X,p.Y,0,0);

的Thread.Sleep(150);

mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP,p.X,p.Y,0,0);
}

空隙sendMouseDown()
{
mouse_event(MOUSEEVENTF_LEFTDOWN,50,50,0,0);
}

空隙sendMouseUp()
{
mouse_event(MOUSEEVENTF_LEFTUP,50,50,0,0);
}

如果你想要做一个鼠标拖动可以先发的MouseDown(鼠标点击),并保持点击它同时改变鼠标的位置不是直接的MouseUp(释放点击)像这样

  sendMouseDown(); 
Cursor.Position =新的点(30,30);
sendMouseUp();


I tried [DllImport("user32.dll")] static extern bool SetCursorPos(int X, int Y);

and it works pretty fine to move the cursor to the desired point. I have never tried such kind of a DLL import before but it works :). However I want more what else can I extract? Mainly I want to make double click, click or use wheel options without any mouse input, just the code how can I do that? and how can I check what else is included in user32dll?

Thanx

解决方案

[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, UIntPtr dwExtraInfo);
private const uint MOUSEEVENTF_LEFTDOWN = 0x02;
private const uint MOUSEEVENTF_LEFTUP = 0x04;
private const uint MOUSEEVENTF_RIGHTDOWN = 0x08;
private const uint MOUSEEVENTF_RIGHTUP = 0x10;

You should Import and Define these Constant's to work with Mouse using Win32API

Use method's below to do Mouse Operation's

void sendMouseRightclick(Point p)
{
    mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, p.X, p.Y, 0, 0);
}

void sendMouseDoubleClick(Point p)
{
    mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, p.X, p.Y, 0, 0);

Thread.Sleep(150);

    mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, p.X, p.Y, 0, 0);
}

void sendMouseRightDoubleClick(Point p)
{
    mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, p.X, p.Y, 0, 0);

    Thread.Sleep(150);

    mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, p.X, p.Y, 0, 0);
}

void sendMouseDown()
{
    mouse_event(MOUSEEVENTF_LEFTDOWN, 50, 50, 0, 0);
}

void sendMouseUp()
{
    mouse_event(MOUSEEVENTF_LEFTUP, 50, 50, 0, 0);
}

If you want to do a Mouse Drag you should First Send MouseDown(Mouse Click) and keep it Clicked While Changing the Mouse Position than Send MouseUp(Release Click) something like this .

sendMouseDown();
Cursor.Position = new Point(30,30);
sendMouseUp();

这篇关于导演鼠标事件函数[DllImport(QUOT; user32.dll中")单击,双击的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆