C#调用API(User32.dll),mouse_event函数详解。


函数功能:该函数综合鼠标击键和鼠标动作。   

VOID mouse_event(

  DWORD dwFlags, // motion and click options

  DWORD dx, // horizontal position or change

  DWORD dy, // vertical position or change

  DWORD dwData, // wheel movement

  ULONG_PTR dwExtraInfo // application-defined information   );

  //MSDN原话

 

C#使用,为了易读,用中文。

   //*****************************************************************

        [DllImport("user32.dll", EntryPoint = "mouse_event")]
        public static extern void 鼠标事件(int 事件对应值, int X坐标, int Y坐标, int 轮子,int 信息);

    //*******************星号内可直接复制运用,加载命名空间即可*****************

   参数1:鼠标事件,在VB与C#,要调用事件需要定义常量,赋与对应值。

   参数2,参数3: 指定x,y标的目标的绝对地位或相对地位

   参数4:如果dwFlags为MOUSEEVENTF_WHEEL,则dwData指定鼠标轮移动的数量。正值表明鼠标轮向前转动,即远离用户

      的方向;负值表明鼠标轮向后转动,即朝向用户。一个轮击定义为WHEEL_DELTA,即120。

        如果dwFlagsS不是MOUSEEVENTF_WHEEL,则dWData应为零。

   参数5:指定与鼠标事件相关的附加32位值。应用程序调用函数GetMessageExtraInfo来获得此附加信息。

   

  mouse_event函数,在C#运用与VB差不多,都需要赋相应值才能使用。

    const int MOUSEEVENTF_MOVE = 0 x0001;     // 移动鼠标           (十):1
       const int MOUSEEVENTF_LEFTDOWN = 0 x0002; //模仿鼠标左键按下    (十):2
       const int MOUSEEVENTF_LEFTUP = 0 x0004; //模仿鼠标左键抬起    (十):4
       const int MOUSEEVENTF_RIGHTDOWN = 0 x0008; //模仿鼠标右键按下    (十):8
       const int MOUSEEVENTF_RIGHTUP = 0 x0010; //模仿鼠标右键抬起    (十):16
       const int MOUSEEVENTF_MIDDLEDOWN = 0 x0020;// 模仿鼠标中键按下    (十):32
       const int MOUSEEVENTF_MIDDLEUP = 0 x0040;// 模仿鼠标中键抬起    (十):64
       const int MOUSEEVENTF_ABSOLUTE = 0 x8000; //标示是否采取绝对坐标    (十):32768

  值是用十六进制表示的,转成十进制后也可使用。通常只用到,1,2,4,8,16,32,64.这七个事件。怎么样,看到规律了吧。

  其实我也有尝试用这些值以外的常量调用mouse_event函数,但是效果也貌似相同结果。

  有兴趣大家可尝试一下。不过通常用人家已给定的值就足够了。规范嘛。

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM