高手进,关于PostMessage和SendMessage的问题

问题描述

我做了2个程序A和B,A发消息,B接收A:[DllImport("User32.dll",EntryPoint="SendMessage")]privatestaticexternintSendMessage(inthWnd,//目标窗口的handleintMsg,//消息intwParam,//第一个消息参数refCOPYDATASTRUCTlParam//第二个消息参数);[DllImport("User32.dll",EntryPoint="FindWindow")]privatestaticexternintFindWindow(stringlpClassName,stringlpWindowName);publicstructCOPYDATASTRUCT{publicIntPtrdwData;publicintcbData;[MarshalAs(UnmanagedType.LPStr)]publicstringlpData;}constintWM_COPYDATA=0x004A;publicForm1(){InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){intWINDOW_HANDLER=FindWindow(null,@"FrmReceive");if(WINDOW_HANDLER!=0){byte[]sarr=System.Text.Encoding.Default.GetBytes(textBox1.Text);intlen=sarr.Length;COPYDATASTRUCTcds;cds.dwData=(IntPtr)100;cds.lpData=textBox1.Text;cds.cbData=len+1;SnedMessage(WINDOW_HANDLER,WM_COPYDATA,0,refcds);}B:publicstructCOPYDATASTRUCT{publicIntPtrdwData;publicintcbData;[MarshalAs(UnmanagedType.LPStr)]publicstringlpData;}constintWM_COPYDATA=0x004A;publicreceive(){InitializeComponent();}protectedoverridevoidDefWndProc(refMessagem){if(m.Msg==WM_COPYDATA){COPYDATASTRUCTmystr=newCOPYDATASTRUCT();Typemytype=mystr.GetType();mystr=(COPYDATASTRUCT)m.GetLParam(mytype);switch(mystr.dwData.ToString()){case"100":textBox1.Text=mystr.lpData;break;case"200":textBox2.Text=mystr.lpData;break;}}base.DefWndProc(refm);}}现在用SendMessage测试成功,但把SendMessage改成PostMessage后,消息就无法传递了想请问下,如果要用PostMessage的话,应该怎么改呢?

解决方案

解决方案二:
PostMessage消息发出后不等消息函数处理完就执行它的下一语句SendMessage消息发出后阻塞等消息函数处理完执行它的下一语句其他地方没有区别的
解决方案三:
引用1楼jinjazz的回复:

PostMessage消息发出后不等消息函数处理完就执行它的下一语句SendMessage消息发出后阻塞等消息函数处理完执行它的下一语句其他地方没有区别的

是的,因为我现在是SERVER发给CLIENT,所以想用PostMessage,但上面代码改成PostMessage后,消息就是发不过
解决方案四:
mark
解决方案五:
试试WM_SETTEXT作为参数
解决方案六:
引用4楼jinjazz的回复:

试试WM_SETTEXT作为参数

不行,WM_SETTEXT作为参数是设置标题的....
解决方案七:
SendMessage把消息直接发送到窗口,并调用此窗口的相应消息处理函数,等消息处理函数结束后SendMessage才返回!SendMessage发送的消息不进入系统的消息队列;SendMessage函数有返回值PostMessage将消息发送到与创建窗口的线程相关联的消息队列后立即返回;PostMessage函数没有返回值;我用PostMessage把消息发到B后,B怎么去获得这个消息呢?
解决方案八:
顶上去,高手来解答下吧

时间: 2024-08-03 20:40:54

高手进,关于PostMessage和SendMessage的问题的相关文章

平台-matlab高手进,不写代码,只说思路

问题描述 matlab高手进,不写代码,只说思路 各位大侠.求解答 题目如下:利用matlab的GUI功能制作pn结的仿真平台,在该平台中,能根据输入的异质结的不同参数,可以展示平衡异质结的能带图,并动态的展示异质结能带图的变化. 针对正偏的异质结,展现其发光特性及异质结其他可能的应用. 请问这个有办法实现吗?大体方案是什么?

大数据-X亿级数据检索速度优化难题,高手进

问题描述 X亿级数据检索速度优化难题,高手进 各位高手,目前碰到一个X亿级数据检索速度优化的难题,大家帮看看怎么解决. 涉及到的表有: KeywordIndex:2.7亿条记录 Original:1014万条记录 KeywordIndex表包括四个字段,ID(PK,int).KeywordID(int).OriginalID(int).ColumnID(int) 建立的索引: PK_KeywordIndex([ID] ASC) IX_KeywordIndex_KeywordID([Keyword

ajax-php采集高手进:利用curl模拟登录抓取数据遇到json调用问题不成功,求助!

问题描述 php采集高手进:利用curl模拟登录抓取数据遇到json调用问题不成功,求助! 我在抓取一个页面的信息(假设a.php),这个页面只是一些基本的html框架,其他关键信息是通过ajax请求(b.php)回来的,返回的是json,然后在通过页面js将json解析,绘制到页面上.问题的关键是ajax请求的信息里有个手机号码需要登录后才显示完整,原网站利用ajax请求b.php获得json数据,如果直接访问b.php也是可以直接得到:{"name":"zhangsan&

combox-C#或者DEV控件高手进,求助大神!呀,gridview中动态添加COMBOX后出现问题

问题描述 C#或者DEV控件高手进,求助大神!呀,gridview中动态添加COMBOX后出现问题 步骤1:我定义一个全局的COMBOX控件变量: 步骤1:我为GRIDVIEW动态添加了一列,将这一列设置我步骤1中的COMBOX: 步骤2:我为这个COMBOX添加click事件,在事件中我读取GRIDVIEW中的focusROW,读取某一列,判断该列的值来动态为COMBOX添加ITEM; 问题:在click事件中,每次都能正确的获取focusROW,也能为combox添加ITEM,但是就是COM

word文档-急,高手进!word转pdf问题!

问题描述 急,高手进!word转pdf问题! 用freemarker根据xml生成的word文档,在用openOffer插件转换成pdf.转换成功后pdf打开后显示的是xml的源码 问题应该怎么解决!我想要的显示的是内容 不是xml的源码!word是xml类型的!

博弈论-anti-SG博弈的问题,高手进。

问题描述 anti-SG博弈的问题,高手进. anti-SG博弈的胜利条件是(g(s)!=0&&Existg(t)>1)||(g(s)==0&&Anyg(t)<=1) 为什么?? 解决方案 我以前写的 http://blog.sina.com.cn/s/blog_51cea4040100h3l9.html 解决方案二: 这篇博文解释的挺好:http://m.blog.csdn.net/blog/ACM_cxlove/7839276 解决方案三: anti-SG是

java问题-图片压缩时遇到问题,高手进,拜谢啊

问题描述 图片压缩时遇到问题,高手进,拜谢啊 问题描述: 使用thumbnailator时nested exception is java.lang.OutOfMemoryError: Java heap space 上传图片后使用thumbnailator进行压缩,所有手机拍摄的图片没有问题.美工做的图,在压缩过程中报溢出错误. 挣扎,求解

cache-mybatis高手进,SOS-mybatis执行查询时返回入参。多谢

问题描述 mybatis高手进,SOS-mybatis执行查询时返回入参.多谢 很怪异的问题,mybatis执行查询时,返回了原本的入参.这个问题偶然在服务器上出现过几次,本地开发环境从未出现过.小弟木有金币,只能道一声感谢!多谢! 代码如下: DAO: try { logger.info("---param: ID " + assReq.getId() + "--Code: " + assReq.getCode()); /** * 怀疑是mybatis 缓存,将A

28897068 Ajax 高级学习群 欢迎高手进群

问题描述 28897068Ajax高级学习群欢迎高手进群 解决方案 解决方案二:我来了,怎么服务器拒绝了呢????不让进啊解决方案三:给我个管理员当562265123帮你管理成员解决方案四:怎么加入不了啊,拒绝.