原贴内容;
http://community.csdn.net/Expert/topic/4382/4382542.xml?temp=.3446772 Optione() ( ) 信誉:100 回答内容
指针使用委托就可以了
可以这样去处理
//用到的函数
user32.dll
SetWindowLong
CallWindowProc//简单的代码说明一下
public  delegate  IntPtr  NewWndProc  //用个委托private IntPtr oldWndProc=IntPtr.Zero;private IntPtr MyWndProc()
{
switch (msg)
{
//你的拦截代码
}
//备份 原来的消息
return CallWindowProc(oldWndProc,hWnd,msg,wParam,lParam);
}
//Form  的 Load事件
private void Form_Load(object sender, System.EventArgs e)
{
//在 Form 的load 事件中 载入你的消息处理函数(MyWndProc)
wpr= new NewWndProc(MyWndProc);
oldWndProc=SetWindowLong(Handle,-4,wpr); //主要参数wpr ,需要声明一个这样类型的SetWindowLong
}//Form  的 Closed事件
private void Form_Closed(object sender, System.EventArgs e)
{
//还原默认处理
if (!oldWndProc.Equals(IntPtr.Zero))
SetWindowLong(Handle,-4,oldWndProc);
}