关于C#.WinForm 与 WinApi的SendMessage 方法
2024-10-09 12:21:52
介绍:
Windows Api 的 SendMessage 该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而和函数PostMessage不同,PostMessage是将一个消息寄送到一个线程的消息队列后就立即返回。
通俗:通过SendMessage函数 向指定窗口句柄 或 控件句柄发送消息,支持跨进程发消息。
举例:
COPYDATASTRUCT cds;//定义消息结构体
cds.dwData = (IntPtr);
cds.cbData = System.Text.Encoding.UTF8.GetBytes("测试").Length + ;//字符串长度
cds.lpData = "测试";//字符串
SendMessage(Process.GetCurrentProcess().MainWindowHandle, 0x004a, , ref cds);//向自身进程的主窗体句柄发送消息
发送消息
在窗体里 加入以下方法接收消息
protected override void DefWndProc(ref Message m)
{
switch (m.Msg)
{
case 0x004a://消息号
COPYDATASTRUCT cds = new SystemTool.COPYDATASTRUCT();
Type t = cds.GetType();
cds = (COPYDATASTRUCT)m.GetLParam(t);
string receiveInfo = cds.lpData;//拿到字符串
break;
default:
base.DefWndProc(ref m);
break;
}
}
接收代码
最新文章
- [转]完美洗牌(Perfect Shuffle)问题
- Css-深入学习之单个颜色实现 hover 和 active 时的明暗变化效果
- Qt之重写QLabel类
- Cisco IOS IP Service Level Agreementv (IP SLA)
- Python代码项目目录规范v1.0
- 第二个App“今日美文”上架【原】
- 获取本地IP和端口号的指令
- winserve2008下不能运行winXP下开发的应用程序→更改“兼容性”
- Linux 下 Error: Could not find or load main class Hello
- Angular - - angular.uppercase、angular.lowercase、angular.fromJson、angular.toJson
- 比较两个date返回日期相差天数
- Hibernate框架学习之注解配置关系映射
- ubuntu16.04 apt-get update出错:由于没有公钥,无法验证下列签名
- 【spring】ApplicationListener传递参数到页面(解决静态+动态资源路径+静态文件的缓存控制)
- VS中ipch文件夹和sdf文件的处理方式
- 巧妙解决windows下 copy命令不接受太长路径的问题
- TP5中即点即改,json分页,单删
- DevExpress GridView删除行
- sql server 2012 打开提示无效的许可证数据。需要重新安装
- python读取excel,数字都是浮点型,日期格式是数字的解决办法