zoukankan      html  css  js  c++  java
  • c#中通过设置钩子监视鼠标移动

    这个问题来自论坛提问,C#的大致代码如下

    using  System;
    using  System.Windows.Forms;
    using  System.Runtime.InteropServices;
    namespace  WindowsApplication1
    {
        
    public   partial   class  Form1 : Form
        
    {
            
    public  Form1()
            
    {
                InitializeComponent();
            }

             
            
    private   void  Form1_Load( object  sender, EventArgs e)
            
    {
                Win32Hook hook 
    =   new  Win32Hook();
                hook.onMouseChange 
    +=   new  EventHandler(hook_onMouseChange);
                hook.SetHook();
            }


            
    void  hook_onMouseChange( object  sender, EventArgs e)
            
    {
                
    this .Text  =  Cursor.Position.ToString();
            }

        }

        
    public   class  Win32Hook
        
    {

            [DllImport(
    " kernel32 " )]
            
    public   static   extern   int  GetCurrentThreadId();

            [DllImport(
    " user32 " ,CharSet  =  CharSet.Auto, CallingConvention  =  CallingConvention.StdCall)]
            
    public   static   extern   int  SetWindowsHookEx(
                HookType idHook,
                HOOKPROC lpfn,
                
    int  hmod,
                
    int  dwThreadId);

            
    public   enum  HookType
            
    {
                WH_GETMESSAGE 
    =   3
            }


            
    public   delegate   int  HOOKPROC( int  nCode,  int  wParam,  int  lParam);

            
    public   event  System.EventHandler onMouseChange;

            
    public   void  SetHook()
            
    {
                SetWindowsHookEx(HookType.WH_GETMESSAGE,
                    
    new  HOOKPROC( this .MyKeyboardProc),
                    
    0 ,
                    GetCurrentThreadId());
            }


            
    public   int  MyKeyboardProc( int  nCode,  int  wParam,  int  lParam)
            
    {
                
    if  (onMouseChange  !=   null )
                
    {
                    onMouseChange(
    null null );
                }

                
    return   0 ;
            }

        }

    }
  • 相关阅读:
    数组删除元素注意事项
    点击下拉菜单以外的区域,关闭弹窗
    webpack学习笔记(六)优化
    webpack学习笔记(五)
    webpack学习笔记(四)
    webpack学习笔记(三)
    webpack学习笔记(二)
    es6 笔记
    vue学习笔记——组件的优化
    vue学习笔记——路由
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6204956.html
Copyright © 2011-2022 走看看