模拟鼠标点击事件

方法一:
调用api
在Visual Baisc.net中的声明: 
Declare   Sub mouse_event Lib "user32" (ByVal dwFlags As LongByVal dx As LongByVal dy As LongByVal cButtons As LongByVal dwExtraInfo As Long
Public Const MOUSEEVENTF_LEFTDOWN = &H2 '模拟鼠标左键按下 
Public Const MOUSEEVENTF_LEFTUP = &H4 ’模拟鼠标左键释放 
Public Const MOUSEEVENTF_MIDDLEDOWN = &H20 '模拟鼠标中间键按下 
Public Const MOUSEEVENTF_MIDDLEUP = &H40 '模拟鼠标中间键释放 
Public Const MOUSEEVENTF_RIGHTDOWN = &H8 '模拟鼠标右键按下 
Public Const MOUSEEVENTF_RIGHTUP = &H10 '模拟鼠标右键释放 
Public Const MOUSEEVENTF_MOVE = &H1 '模拟鼠标指针移动 
例: 

 

 

mouse_event MOUSEEVENTF_LEFTDOWN, 10 , 10 , 0 , 0  
' 在(10,10)模拟鼠标左键按下 

方法二:

 

namespace  ClassLibrary.Hardware 

public class Mouse 

internal const byte SM_MOUSEPRESENT = 19
internal const byte SM_CMOUSEBUTTONS = 43
internal const byte SM_MOUSEWHEELPRESENT = 75
internal struct POINTAPI 

internal int x; 
internal int y; 
}
 
internal struct RECT 

internal int left ; 
internal int top ; 
internal int right ; 
internal int bottom ; 
}
 
[System.Runtime.InteropServices.DllImport(
"user32.dll" , EntryPoint="SwapMouseButton")] 
internal extern static int SwapMouseButton ( int bSwap ); 
[System.Runtime.InteropServices.DllImport(
"user32" , EntryPoint="ClipCursor")] 
internal extern static int ClipCursor(ref RECT lpRect); 
[System.Runtime.InteropServices.DllImport( 
"user32.dll" , EntryPoint="GetCursorPos" )] 
internal extern static int GetCursorPos( ref POINTAPI lpPoint ); 
[System.Runtime.InteropServices.DllImport(
"user32.dll", EntryPoint="ShowCursor")] 
internal extern static bool ShowCursor ( bool bShow ) ; 
[System.Runtime.InteropServices.DllImport( 
"user32.dll" , EntryPoint = "EnableWindow" )] 
internal extern static int EnableWindow( int hwnd , int fEnable ); 
[System.Runtime.InteropServices.DllImport(
"user32.dll" , EntryPoint="GetWindowRect")] 
internal extern static int GetWindowRect( int hwnd , ref RECT lpRect ) ; 
[System.Runtime.InteropServices.DllImport(
"user32.dll" , EntryPoint="SetCursorPos")] 
internal extern static int SetCursorPos ( int x , int y ) ; 
[System.Runtime.InteropServices.DllImport(
"user32.dll" , EntryPoint="GetSystemMetrics")] 
internal extern static int GetSystemMetrics( int nIndex ); 
[System.Runtime.InteropServices.DllImport(
"user32.dll" , EntryPoint="SetDoubleClickTime")] 
internal extern static int SetDoubleClickTime ( int wCount ); 
[System.Runtime.InteropServices.DllImport(
"user32.dll" , EntryPoint="GetDoubleClickTime")] 
internal extern static int GetDoubleClickTime() ; 
[System.Runtime.InteropServices.DllImport(
"kernel32.DLL", EntryPoint="Sleep")] 
internal extern static void Sleep ( int dwMilliseconds ) ; 
//得到鼠标相对与全屏的坐标,不是相对与你的Form的,且与你的分辨率有关系 
public static int FullScreenPosition_X 

get 

POINTAPI _POINTAPI 
= new POINTAPI(); 
GetCursorPos ( 
ref _POINTAPI ); 

return _POINTAPI.x; 
}
 
}
 

public static int FullScreenPosition_Y 

get 

POINTAPI _POINTAPI 
= new POINTAPI(); 
GetCursorPos ( 
ref _POINTAPI ); 

return _POINTAPI.y; 
}
 
}
 
// 隐藏 显示 鼠标 
public static void Hide() 

ShowCursor( 
false ) ; 
}
 

public static void Show() 

ShowCursor( 
true ) ; 
}
 
// 将鼠标锁定在你的Form里 不过你得将你的Form先锁了,Form Resize 就失效了 
public static void Lock( System.Windows.Forms.Form ObjectForm ) 

RECT _FormRect 
= new RECT (); 

GetWindowRect( ObjectForm.Handle.ToInt32() , 
ref _FormRect ); 

ClipCursor( 
ref _FormRect ); 
}
 

public static void UnLock() 

RECT _ScreenRect 
= new RECT (); 

_ScreenRect.top 
= 0
_ScreenRect.left 
= 0
_ScreenRect.bottom 
= System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Bottom; 
_ScreenRect.right 
= System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Right; 

ClipCursor( 
ref _ScreenRect ); 
}
 
// 鼠标失效,不过失效的好像不只是鼠标,小心哦 
public static void Disable( System.Windows.Forms.Form ObjectForm ) 

EnableWindow( ObjectForm.Handle.ToInt32() , 
0 ) ; 
}
 
public static void Enable( System.Windows.Forms.Form ObjectForm ) 

EnableWindow( ObjectForm.Handle.ToInt32() , 
1 ) ; 
}
 
// 鼠标自己移动 很想动画哦 参数是2个控件的handle 
// 看这个方法前,先用凉水擦把脸。。。 反正我写的时候 头晕 
public static void Move ( int From_Handle_ToInt32 , int To_Handle_ToInt32 ) 

RECT rectFrom 
= new RECT () ; 
RECT rectTo 
= new RECT () ; 

int i ; 

GetWindowRect( From_Handle_ToInt32 , 
ref rectFrom ) ; 
GetWindowRect( To_Handle_ToInt32 , 
ref rectTo ) ; 
if ( ( rectFrom.left + rectFrom.right ) / 2 - ( rectTo.left + rectTo.right ) / 2 > 0 ) 

for ( i = ( rectFrom.left + rectFrom.right ) / 2 ; i >= ( rectTo.left + rectTo.right ) / 2 ; i-- ) 

SetCursorPos ( i , ( rectFrom.top 
+ rectFrom.bottom ) / 2) ; 
Sleep ( 
1 ) ; 
}
 
}
 
else 

for ( i = ( rectFrom.left + rectFrom.right ) / 2 ; i <= ( rectTo.left + rectTo.right ) / 2 ; i++ ) 

SetCursorPos ( i , ( rectFrom.top 
+ rectFrom.bottom ) / 2) ; 
Sleep ( 
1 ) ; 
}
 
}
 
if ( ( rectFrom.top + rectFrom.bottom ) / 2 - ( rectTo.top + rectTo.bottom ) / 2 > 0 ) 

for ( i = ( rectFrom.top + rectFrom.bottom ) / 2 ; i >= ( rectTo.top + rectTo.bottom ) / 2 ; i-- ) 

SetCursorPos ( ( rectTo.left 
+ rectTo.right ) / 2 , i ) ; 
Sleep ( 
1 ) ; 
}
 
}
 
else 

for ( i = ( rectFrom.top + rectFrom.bottom ) / 2 ; i <= ( rectTo.top + rectTo.bottom ) / 2 ; i++ ) 

SetCursorPos ( ( rectTo.left 
+ rectTo.right ) / 2 , i ) ; 
Sleep ( 
1 ) ; 
}
 
}
 
}
 

// 得到你的鼠标类型 
public static string Type 

get 

if ( GetSystemMetrics( SM_MOUSEPRESENT ) == 0 ) 

return "本计算机尚未安装鼠标" ; 
}
 
else 

if ( GetSystemMetrics( SM_MOUSEWHEELPRESENT ) != 0 ) 

return GetSystemMetrics( SM_CMOUSEBUTTONS ) + "键滚轮鼠标" ; 
}
 
else 

return GetSystemMetrics( SM_CMOUSEBUTTONS ) + "键鼠标" ; 
}
 
}
 
}
 
}
 
// 设置鼠标双击时间 

public static void DoubleClickTime_Set( int MouseDoubleClickTime ) 

SetDoubleClickTime( MouseDoubleClickTime ); 
}
 

public static string DoubleClickTime_Get() 

return GetDoubleClickTime().ToString() ; 
}
 
// 设置鼠标默认主键 我是没有见过谁左手用鼠标 
public static void DefaultRightButton() 

SwapMouseButton ( 
1 ) ; 
}
 

public static void DefaultLeftButton() 

SwapMouseButton ( 
0 ) ; 
}
 
}
 
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值