如何拦截windows消息,具体点!!!(200分)

  • 主题发起人 主题发起人 zzutlink
  • 开始时间 开始时间
Z

zzutlink

Unregistered / Unconfirmed
GUEST, unregistred user!
关于这个问题,请大家指点,具体点吧,最好举个例子!麻烦各位了!
 
首先用Type定义一个消息
Type
MyMessage=WM_User+1;
而后定义一个响应该消息的一个过程或函数,现简称为方法

Procedure My_Add(x, y:Integer); Message MyMessage;
 
只要定义相应的消息处理过程就可以,如:
procedure WMKeyDown(Var Message:TWMKeyDown);message WM_KeyDown;
可以截获键盘按下消息。不同的Windows有不同的消息,具体可查看Windows SDK.
 
//agree balaschen
 
Delphi中拦截消息至少有5种方式. 上面各位说的是最常见的一种. 另4种分别是:
1. 重载WndProc方法(TWinControl类).
2. 重载DefaultHandler方法(TControl类)
3. 替换WindowProc属性(TControl类)
4. Hook.

这4种方法的优先级都比上面各位说的那种方法高. 所谓优先级高指的是很多消息用
procedure xxxxx(...); message xxxxx无法截获.
 
在Application的OnMessage也可以处理消息。
 
发个小例子, 挺简单, 希望有所帮助 :))
 
还可以用窗口子类化!
 
Windows中彻底拦截消息的办法是使用Hook函数, 详细内容参见Delphi中带有的
.../Common Files/Borland Shared/MSHelp/win32s.hlp"
 
请继续或结束
 
请继续或结束
 
多人接受答案了。
 
后退
顶部