发送与接收消息(sendmessage)
在Windows编程中,`SendMessage`函数是一个非常关键的API,用于在进程间或者同一进程内的窗口之间发送消息。本文将详细解析标题“发送与接收消息(sendmessage)”所涉及的知识点,以及如何通过`FindWindow`找到窗口句柄,并结合`SendMessage`实现消息的发送和接收。 `SendMessage`函数的基本语法如下: ```cpp LRESULT SendMessage(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); ``` - `hWnd`:目标窗口的句柄,标识接收消息的窗口。 - `msg`:指定要发送的消息类型,可以是系统定义的消息(如WM_PAINT、WM_KEYDOWN等)或自定义消息。 - `wParam`:根据消息类型传递额外信息的第一个参数。 - `lParam`:根据消息类型传递额外信息的第二个参数。 `FindWindow`函数用于查找具有特定类名和窗口名的顶级窗口。其基本语法如下: ```cpp HWND FindWindow(LPCSTR lpClassName, LPCSTR lpWindowName); ``` - `lpClassName`:窗口类的名称,可以是预定义的类名或自定义的类名。 - `lpWindowName`:窗口的标题,如果要查找所有匹配类名的窗口,可以设置为NULL。 在描述中提到的程序中,发送端会使用`FindWindow`来寻找目标窗口,然后调用`SendMessage`向找到的窗口发送消息。接收端则需要注册一个消息处理函数,用于接收并处理`SendMessage`发送过来的消息。 例如,发送端的代码可能如下: ```cpp HWND targetWnd = FindWindow(NULL, L"Receiver Window Title"); // 查找窗口 if (targetWnd != NULL) { SendMessage(targetWnd, WM_USER_DEFINED, 1234, 5678); // 发送自定义消息 } ``` 接收端则需要在消息循环中处理`WM_USER_DEFINED`消息: ```cpp LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_USER_DEFINED: // 处理自定义消息,如打印wParam和lParam的值 printf("Received custom message: wParam=%d, lParam=%d\n", wParam, lParam); break; // 其他消息处理... default: return DefWindowProc(hWnd, message, wParam, lParam); } } ``` 为了实现这个功能,首先需要注册窗口类,创建窗口,然后在窗口的主消息循环中调用`GetMessage`/`TranslateMessage`/`DispatchMessage`来处理接收到的消息。同时,发送端也需要有适当的用户交互,比如一个按钮触发消息的发送。 总结来说,`SendMessage`和`FindWindow`是Windows API中的两个重要工具,用于窗口间的通信。发送端通过`FindWindow`找到目标窗口,再利用`SendMessage`发送消息;接收端通过注册消息处理函数接收并响应这些消息。这样的设计使得不同进程间的通信成为可能,是Windows编程中常见的技术之一。
- 1
- dawn_blossom2014-04-11总体来说还是有参考价值的
- cuckoochun2014-03-25我下错了 没看仔细 以为是android的
- 粉丝: 122
- 资源: 45
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 西电微机原理实验-西安电子科技大学微机原理课程实验概述与指导
- 智慧校园(校园AI 产品) 校园安全 智慧校园 教育数字化 AI校园
- 西电微机原理实验四:8255可编程并行接口的应用
- 基于 Go+Echo 开发的多房间实时通讯系统。详细文档+优秀项目+全部资料.zip
- 基于 Go + Vue 的现代化博客系统详细文档+优秀项目+全部资料.zip
- 基于 go + grpc + consul 的微服务系统详细文档+优秀项目+全部资料.zip
- 基于 golang goframe + vue3 的、前后端分离的后台管理系统快捷使用模板,支持按钮级别的 RBAC。详细文档+优秀项目+全部资料.zip
- 基于 goframe2 和vue3 开发的全栈前后端分离的后台管理系统,详细文档+优秀项目+全部资料.zip
- 基于 Golang 的 容器管理系统 API详细文档+优秀项目+全部资料.zip
- 基于 React 实现的电商后台管理系统的前端项目详细文档+优秀项目+全部资料.zip
- 基于 Golang开发的微服务网关,能够实现高性能 HTTP API 转发、服务编排、多租户管理、API 访问权限控制等目的,拥有强大的自定义插件系统可以自行扩展详细文档+优秀项目+全部资料.zip
- 基于 Vue + Go 实现客户关系管理系统,,主要功能有仪表盘、客户管理、合同管理、产品管理、配置、订阅等功能详细文档+优秀项目+全部资料.zip
- 基于beego v2.0.1框架和AdminLte前端框架,开发的go语言通用后台系统,详细文档+优秀项目+全部资料.zip
- 基于 SpringBoot + Spring + SpringMvc + Mybatis + Shiro+ Redis 开发单点登录管理系统详细文档+优秀项目+全部资料.zip
- 基于beego的简易blog系统详细文档+优秀项目+全部资料.zip
- 基于Beego开发的可切换模板的 BBS 社交博客系统、它安装简单便捷,页面简介优美。前端是HTML+JS+CSS,不需要掌握一些前端技术栈也能轻松自定义页面。详细文档+优秀项目+全部资料.zip