博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
拦截信息方法
阅读量:7077 次
发布时间:2019-06-28

本文共 1344 字,大约阅读时间需要 4 分钟。

但是你可以拦截这个控件的双击消息。 以下代码可加在控件的父窗口(假设为Form1),并在Form1初始化后安装拦截挂钩。同样的方法也可屏蔽那控件的其它消息,如屏蔽它的右键事件。

private const int GWL_WNDPROC = -4;

private const int WM_LBUTTONDOWN=0x0201;

private const int WM_LBUTTONUP=0x0202;

private const int WM_LBUTTONDBLCLK=0x0203;//双击消息

[DllImport("user32.dll", CharSet = CharSet.Auto)]

private static extern IntPtr SetWindowLong(IntPtr hWnd, int nIndex, MyWndProc wndProc);

[DllImport("user32.dll", CharSet = CharSet.Auto)]

private static extern IntPtr CallWindowProc(IntPtr wndProc, IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);

 

public delegate IntPtr MyWndProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);

 

private IntPtr OldWndProc = IntPtr.Zero;

private MyWndProc Wpr = null;

private IntPtr MyControlWndProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam) {

 switch (msg)

 { case WM_LBUTTONDBLCLK://拦截双击消息

/*在这里,你想干什么就干什么*/

....................... .......................

return (IntPtr)0;

default:

 return CallWindowProc(OldWndProc, hWnd, msg, wParam, lParam);

}

}

//假设那个控件变量名为 _thatControl

 

private void InitializeThatControl()

{ //初始化的时候安装消息拦截

this.Wpr = new MyWndProc(this.MyControlWndProc);

this.OldWndProc = SetWindowLong(_thatControl.Handle, GWL_WNDPROC, Wpr);

}

 

public Form1()

 {

InitializeComponent();

InitializeThatControl();//加这句,在Form初始化后安装消息拦截

}

 

转载于:https://www.cnblogs.com/zjgtlkj/p/3278646.html

你可能感兴趣的文章
asp.net 用正则表达式过滤内容中的电话,qq,email
查看>>
1109 Group Photo
查看>>
Flutter插件开发之APK自动安装
查看>>
创建本地CM 离线服务器
查看>>
PHP数组操作——取数组最后一个值
查看>>
springboot集成swagger2
查看>>
react组件通信
查看>>
利用消息队列处理分布式事务
查看>>
UIScrollView中使用AutoLayout
查看>>
为什么用ls和du显示出来的文件大小有差别?
查看>>
node.js学习之流解析(一)
查看>>
YxdIOCP (DIOCP修改版)
查看>>
[Unity] Unity3D研究院编辑器之独立Inspector属性
查看>>
【c】插入排序
查看>>
大数据生态圈的一致性
查看>>
完美的代价
查看>>
程序内部让用户直接上appstore评价游戏的链接地址以及跳转方法
查看>>
【快学springboot】4.接口参数校验
查看>>
SQLSERVER存储过程基本语法
查看>>
第七 其它模块及面向对象
查看>>