• C#中通过设置钩子监视鼠标移动
    时间:2008-11-23   作者:佚名   出处:互联网

    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;
    }
    }
    }

    网友留言/评论

    我要留言/评论