C#中发送消息给指定的窗口,以及接收消息
更新时间:2023-09-19 21:38:01 阅读量: 小学教育 文档下载
如何在C#中发送消息给指定的窗口? public class Note {
//声明 API 函数
[DllImport(\
private static extern IntPtr SendMessage(int hWnd, int msg, IntPtr wParam, IntPtr lParam);
[DllImport(\
private static extern int FindWindow(string lpClassName, string lpWindowName);
//定义消息常数
public const int CUSTOM_MESSAGE = 0X400 + 2;//自定义消息
//向窗体发送消息的函数
public void SendMsgToMainForm(int MSG) {
int WINDOW_HANDLER = FindWindow(null, \协同标绘\
if (WINDOW_HANDLER == 0) {
throw new Exception(\ }
long result = SendMessage(WINDOW_HANDLER, CUSTOM_MESSAGE, new IntPtr(14), IntPtr.Zero).ToInt64();
} }
在协同标绘窗口里拦截消息的函数:
protected override void WndProc(ref System.Windows.Forms.Message msg) {
switch (msg.Msg) {
case Note.CUSTOM_MESSAGE: //处理消息 {
switch (msg.WParam.ToString()) {
case \对象添加 string s = \
addOne(s); break;
case \对象更新 string sn = \
updateID(sn); break;
case \对象删除
deleteID(\ break;
case \与会者信息更新
updateClientInfor(\张三_在线\
break;
}
}
break;
default:
base.WndProc(ref msg);//调用基类函数处理非自定义消息。 break; } }
private void button1_Click(object sender, EventArgs e) {
Note a = new Note();
a.SendMsgToMainForm(Note.CUSTOM_MESSAGE); }
FindWindow()函数的用法。要在C#里使用该API,写出FindWindow()函数的声明: [DllImport(\
private extern static IntPtr FindWindow(string lpClassName, string lpWindowName);
这个函数有两个参数,第一个是要找的窗口的类,第二个是要找的窗口的标题,是窗体的Text名字,不是name。在搜索的时候不一定两者都知道,但至少要知道其中的一个。有的窗口的标题是比较容易得到的,如\计算器\,所以搜索时应使用标题进行搜索。但有的软件的标题不是固定的,如\记事本\,如果打开的文件不同,窗口标题也不同,这时使用窗口类搜索就比较方便。如果找到了满足条件的窗口,这个函数返回该窗口的句柄,否则返回0。 看例子
IntPtr ParenthWnd = new IntPtr(0);
ParenthWnd = FindWindow(null,\ //判断这个窗体是否有效 if (ParenthWnd != IntPtr.Zero) {
MessageBox.Show(\找到窗口\ } else
MessageBox.Show(\没有找到窗口\
从上面的讨论中可以看出,如果要搜索的外部程序的窗口标题比较容易得到,问题是比较简单的。可如果窗口的标题不固定或者根本就没有标题,怎么得到窗口的类呢?如果你安装了Visual C++,你可以使用其中的Spy,在Spy++中有一个FindWindow工具,它允许你使用鼠标选择窗口,然后Spy++会显示这个窗口的类。
在Win32 API中还有一个FindWindowEx,它非常适合寻找子窗口。
正在阅读:
C#中发送消息给指定的窗口,以及接收消息09-19
死亡现象解读作业10-05
科研方法与论文写作 考试 7503-01
写动物的作文小学生二年级06-13
学校食堂营养餐管理工作计划04-14
14.1.3积的乘方 206-26
我的大学生活英语演讲稿05-06
- 通信原理实验报告
- 2016年上半年安徽省临床医学检验技术中级技师职称试题
- 传智播客刘意老师JAVA全面学习笔记
- 星级酒店客房部保洁服务标准与工作流程操作规范 - PA新员
- 算法竞赛入门经典授课教案第1章 算法概述
- 《微信公众平台架起家校互通桥》结题报告
- 2018年宁夏银川市高考数学三模试卷(理)Word版含解析
- 大学生创业基础 - 尔雅
- 2016年6月英语六级真题写作范文3套
- 中国磁性材料纸行业专项调查与发展策略分析报告(2015-2020)
- 云南省2018届高三普通高中学业水平考试化学仿真试卷二Word版缺答案
- 窗函数法设计低通滤波器
- 第三章 绩效考评方法与绩效管理模式
- 高等数学教案
- 个人独资合伙企业习题及答案
- 小学语文沪教版三年级上册第六单元第30课《想别人没想到的》公开课优质课教案比赛讲课获奖教案
- 曳引钢丝绳及其他曳引系统校核计算 - 图文
- 淮阴工学院管理学期末试卷7 - 图文
- 受力分析方法(1)
- 2013-2014学年陕西省西安市西工大附小五年级(上)期末数学试卷及解析
- 消息
- C#
- 接收
- 指定
- 发送
- 窗口
- 以及
- 干部身份审核认定表1
- 企业战略管理单选题
- 欧陆590故障说明
- 装载机理论考试试题
- 附录2:企业财务分析报告范文
- 2014年甘肃一万名考试公基练习题10
- 外科学总论总考卷(2)
- 香港证券市场投资主体构成及投资机会分析
- 山东省聊城市某重点高中2013届高三上学期1月份模块检测语文试题
- 西城区2014-2015学年高二下学期期末考试语文试卷及答案
- 第四章存货练习题
- 联想LCSE初级工程师认证技术规范题库 - 图文
- 南京港龙潭港区四期工程(集装箱二期)环评报告书
- 日语一级语法分类详解-6倾向、様子、状态
- 关于印发《广西壮族自治区建筑工人职业培训考核实施办法(试行)》的通知(桂建人〔2015〕66号) - 图文
- 江苏师范大学毕业生自我鉴定范文最新原创
- 北京市西城区2017-2018学年度八年级第二学期期末考试物理试卷含答案 - 图文
- 2018年心理健康知识竞赛试题库及答案(共329题)
- “十三五”重点项目-批发有机化学品项目商业计划书
- 计算机二级试题及答案