,,C#采用mouse_event函数实现模拟鼠标功能

,,C#采用mouse_event函数实现模拟鼠标功能

本文主要介绍C#模拟鼠标点击的小功能,通过代码分析给大家。有需要的朋友可以参考一下。

我通过下面的代码和大家分享一下C#模拟鼠标。具体内容如下:

想必很多人在项目开发中可能会遇到需要模拟鼠标点击的小函数,百度之后也会有很多人采用mouse_event函数,但我不想讨论如何使用mouse_event函数,因为它没有太大的意义。

静态void mouse_event(int dwFlags,int dx,int dy,int cButtons,int dwExtraInfo)

{

int x=dx,y=dy

edit_position(dwFlags,dx,dy,ref x,ref y);

IntPtr hWndFromPoint=WindowFromPoint(x,y);

screen_to_client(hWndFromPoint,ref x,ref y);

send_message(hWndFromPoint,dwFlags,cButtons,x,y);

}

你在上面的代码中发现了什么?如果你发现你知道这篇文章讲的是什么,也许你会有兴趣看,但是想想我现在在工地干活这么惨也没关系。

鼠标点击目标时,会向鼠标点击的目标窗口发布消息,根据鼠标的按钮和状态发布不同的消息。一个完整的“鼠标左键点击”事件过程是“WM_LBUTTONDOWN”

WM_LBUTTONUP”是指鼠标“先按下左键,再抬起左键”。因为mouse_event可以模拟鼠标点击过程,而不是直接点击一个完整的鼠标,所以也有“按下抬起”的情况。

mouse _ event(mouse event f _ LEFTDOWN | mouse event f _ LEFTUP | mouse event f _ MOVE,-450,0,1,0);

Mouse_event当没有提供MOUSEEVENTF_MOVE数量时,光标不会移动到相对位置。“光标的相对位置=当前光标位置的新光标位置”。如果提供了MOUSEEVENTF_ABSOLUTE的绝对位置,则新的光标位置将生效,而不添加当前光标位置。

静态void edit_position(int dwFlags,int dx,int dy,ref int x,ref int y)

{

Point pos=鼠标位置;

x=x位置。x;

y=y位置。y;

if((dw flags | mouse eventf _ ABSOLUTE)==dw flags)

SetCursorPos(dx,dy);

if((dw flags | mouse eventf _ MOVE)==dw flags)

SetCursorPos(x,y);

}

edit_position函数主要用于将mouseevent f _移动到MOUSEEVENTF_ABSOLUTE。

支持相对/绝对光标位置修改

静态void send_message(IntPtr hWnd,int dwFlags,int cButtons,int x,int y)

{

if((dw flags | mouse eventf _ left down)==dw flags)

SendMessage(hWnd,WM_LBUTTONDOWN,cButtons,MakeDWord(x,y));

if((dw flags | mouse eventf _ LEFTUP)==dw flags)

SendMessage(hWnd,WM_LBUTTONUP,cButtons,MakeDWord(x,y));

if((dw flags | mouse eventf _ right down)==dw flags)

SendMessage(hWnd,WM_RBUTTONDOWN,cButtons,MakeDWord(x,y));

if((dw flags | mouse eventf _ right up)==dw flags)

SendMessage(hWnd,WM_RBUTTONUP,cButtons,MakeDWord(x,y));

if((dw flags | mouse eventf _ middle down)==dw flags)

SendMessage(hWnd,WM_MBUTTONDOWN,cButtons,MakeDWord(x,y));

if((dw flags | mouse eventf _ middle up)==dw flags)

SendMessage(hWnd,WM_MBUTTONUP,cButtons,MakeDWord(x,y));

}

send_message函数主要用来模拟鼠标点击的过程。我上面提到过“先按下左键,再抬起左键”。在上面的代码中,你可以清楚地看到。如果可以改试试,会怎么样?而不是说

你最好自己做,但你应该早点来。

静态int MakeDWord(int low,int high)

{

return low (high * Abs(~ushort。max value));

}

静态int Abs(int value)

{

返回((值31) ^值)-(值31);

}

MakeDWord/merge integers,功能主要是将两个short合并成一个int,分为高低两部分。

静态bool screen _ to _ client(int ptr hwnd,ref int x,ref int y)

{

bool bRetVal=false

Point lpptPos=新点(x,y);

if((bret val=ScreenToClient(hwnd,ref lpptPos)))

{

x=lpptPos。x;

y=lpptPos。y;

}

返回布雷特瓦尔;

}

Screen_to_client函数,因此得名,主要用于将屏幕上的坐标转换为窗口客户端上的对应坐标。

公共const int wm _ lbuttondown=513//鼠标左键按下

公共const int wm _ lbuttonup=514//鼠标左键抬起

公共const int wm _ rbuttondown=516//鼠标右键按下

公共const int wm _ rbuttonup=517//鼠标右键抬起

公共团体内部wm _ mbuttondown=519//鼠标中键按下

公共团体内部wm _ mbuttonup=520//鼠标中键抬起

public const int mouse ventf _ move=0x 0001;//移动鼠标

public const int mouse ventf _ left down=0x 0002;//鼠标左键按下

公共const int mouse ventf _ left up=0x 0004;//鼠标左键抬起

public const int mouse ventf _ right down=0x 0008;//鼠标右键按下

public const int mouse ventf _ right up=0x 0010;//鼠标右键抬起

public const int mouse ventf _ middle down=0x 0020;//鼠标中键按下

public const int mouse ventf _ middle up=0x 0040;//鼠标中键抬起

public const int mouse ventf _ absolute=0x 8000;//绝对坐标

[DllImport('user32.dll ',SetLastError=true)]

公共静态外部int sendmessage(intpt hwnd、int umsg、int wParam、int lparam

[DllImport('user32.dll ',SetLastError=true)]

公共静态外部intptr windowfrompoint(int point,int point);

[DllImport('user32.dll ',SetLastError=true)]

公共静态外部int setursos(int x,int y);

[DllImport('user32.dll ',SetLastError=true)]

公共静态外部bool屏幕触摸客户端(intpt hwnd,ref point lppt);

//[DllImport('user32 ',SetLastError=true)]

//public static external int mouse _ event(int dwf flags,int dx,int dy,int cButtons,int dwextrainfo);

鼠标右键单击(静默):

复制代码代码如下:

mouse _ event(mouse ventf _ right down | mouse ventf _ right up,0,0,1,0);

鼠标左键双击(静默):

复制代码代码如下:

mouse _ event(mouse event _ left down | mouse event _ left up,0,0,2,0);

鼠标移动(相对位置):

复制代码代码如下:

mouse _ event(鼠标事件_移动,100,50,0,0):

鼠标移动(绝对位置):

复制代码代码如下:

mouse _ event(mouse event f _ absolute,100,50,0,0)-滑鼠_事件(鼠标事件_绝对,100,50,0,0):

以上内容比较多请认真学习,希望能够帮助到大家。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • vue监听指定按钮加点击事件,vue按钮点击事件,vue双击事件2.0事件监听(点击-双击-鼠标事件)和事件修饰符操作
  • js鼠标触碰事件,js鼠标事件包括哪几种
  • js鼠标触碰事件,js鼠标事件包括哪几种,关于js中的鼠标事件总结
  • js鼠标拖动div,js 移动鼠标
  • js鼠标拖动div,js 移动鼠标,JS实现简单移动端鼠标拖拽
  • js怎么实现点击按钮图片切换,js鼠标点击按钮图片移动
  • js怎么实现点击按钮图片切换,js鼠标点击按钮图片移动,js鼠标点击图片切换效果代码分享
  • js小球跟随鼠标移动,js鼠标跟随特效
  • js小球跟随鼠标移动,js鼠标跟随特效,js实现鼠标跟随小游戏
  • jquery鼠标悬停二级菜单,jquery鼠标悬停按钮切换图片
  • jquery鼠标悬停二级菜单,jquery鼠标悬停按钮切换图片,jQuery实现鼠标悬停3d菜单展开动画效果
  • html鼠标特效代码,html鼠标特效
  • html鼠标特效代码,html鼠标特效,10个经典的网页鼠标特效代码
  • win7鼠标滚轮上下失灵,win7鼠标滚轮用不了
  • thinkpad usb口不能用 鼠标,thinkpad电脑怎么禁用触控
  • 留言与评论(共有 条评论)
       
    验证码: