代码改变世界

.NET 的钩子组件……(封装起来使得你不用写代码即可完成钩子的设置)

2008-12-24 02:04 by Tsanie, ... 阅读, ... 评论, 收藏, 编辑

开发中我们很多时候会遇到使用钩子的情况。

用户按下了个按键,我怎么捕捉的到?好,如果焦点在自己的Form里的话,简单,重写ProcessDialogKey方法即可。。如果焦点在其他应用程序呢,Windows不会给我的Form发送按键消息,想捕捉这个按键就可以用钩子了。。。

同样,捕获鼠标也是如此。。不仅是键盘鼠标消息,挂上WH_GETMESSAGE钩子之后我们可以获得其他更多的消息。

 

前两天看到一个VB写的类,把它给改成C#的了,以组件(Component)形式使用,直接拖到设计器里就好,然后,给这个组件添加事件(KeyUp、KeyDown、MouseUp……)。那么当用户有这些动作的时候就会触发这些事件了,用起来是不是很方便……

 

设计预览:(像Timer组件一样简简单单的拖进来即可)

 

代码:

 

  1/*
  2 * Copyright (c) 2008 黑色珊瑚::Tsorgy.Utils, Reserved.
  3 * 
  4 * Filename:    @(#)Hook.cs
  5 * Create by:   TsOrgY
  6 * Email:       tsorgy@gmail.com
  7 * Date:        2008/12/20 16:30:09
  8 * 
  9 * Classname:   Hook
 10 * Description: 钩子组件.
 11 *              
 12 */

 13
 14using System;
 15using System.Runtime.InteropServices;
 16using System.Reflection;
 17using System.ComponentModel;
 18
 19namespace Tsorgy.Utils {
 20
 21    /// <summary>
 22    /// 钩子工具类.
 23    /// </summary>

 24    [DefaultEvent("KeyUp")]
 25    [DefaultProperty("Tag")]
 26    public class Hook : Component {
 27        * 属性 *
 60
 61        * 事件 *
113
114        * 公共方法 *
142
143        - 枚举 -
171
172        - API 相关 -
242
243        - 回调函数 -
283
284        - 全局变量 -
289
290        - 构造方法 -
305
306        - 私有方法 -
388
389        | 重写方法 |
399    }

400}

401