SendMessage发送自定义消息(由WM_GETTEXT想到的) 得到消息WM_GETTEXT后,可以填充参数后,用另外一个自定义消息WM_SENDTEXT把这些字符串发会到源窗口中 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果是跟字符有关的消息,一般 lParam 参数都是一个字符缓冲区的指针在消息处理过程中,用 memcpy 函数把 lParam 填充就可以啦 SendMessage(someone, "who are you", wp, lp);等该函数返回后发现wp或者lp指向的字符串被填充,lp=“mary”。如何实现?========================如果接受消息的窗口程序是你自己写的,那么你就自己处理这个自定义消息,不wp和lp只能是32位的,放指针没有什么太多用处,因为跨进程指针无效。这时可以考虑WM_COPYDATA消息如果接受消息的窗口不是你写的,没办法。 问楼上问题是,我发消息的时候,发送端没有窗口。接收端处理后回给谁呢?WM_GETTEXT是怎么实现的呢? Windows可以这样做:SendMessage发送WM_GETTEXT后,发现WM_GETTEXT需要进程间通信,于是创建一个内存映射文件。对方窗体收到消息后把Text复制到内存映射文件中,返回后读取出内存映射文件的内容,复制到lParam指向的地址中,关闭内存映射文件。 发消息的时候,发送端不需要有窗口。你怎么会认为发送端必须要有窗口呢?SendMessage是要等接收消息的窗口处理完毕发送的消息才会返回,跟调用者有没有窗口根本没关系。 回楼上我不是说发送端必须要有窗口。我以为你的意思是接收端给发送端回复消息(通过wm_copydata)。事实上,我还是不知道怎么填充lp。望指教 WM_GETTEXT消息的lParam参数是一个指针,所以实现只需要把数据拷贝到这个指针指向的内存即可,最简单的实现就是:int size = min(wParam - 1, _tcslen(windowtext)); // 假设windowtext是本窗口保存的字符串memcpy((char*)lParam, (char*)windowtext, size * sizeof(TCHAR));((LPTSTR)lParam)[size] = 0;return size; 因为跨进程指针无效。 这句话怎么理解啊,前段时间写了个dll,在dll中启动外部一MIS应用程序,并且在dll中给外部应用程序,发送用户名和密码,已实现自动 登陆功能啊 。可以实现啊,用户名和密码,技术就是一个字符串变量啊。这个怎么解释呢? 前段时间写了个dll,在dll中启动外部一MIS应用程序,并且在dll中给外部应用程序,发送用户名和密码,已实现自动 登陆功能啊 。 可以实现啊,用户名和密码,技术就是一个字符串变量啊。这个怎么解释呢?===================================你用的是自定义消息吗?不是吧。 发送一个数据到底有几次缓冲? 添加CArray变量提示出错 COM 与DLL有什么本质区别? 菜鸟弱问:为什么学C++ WINDOWS程序设计感觉像PS编辑图片 发现Visual Studio 2005中一个有趣的功能,不忍独享,特来共享之。 关于按钮的一些问题。。请各位帮忙一下。。 100分,求结束这个垃圾进程的可以用的代码 DLL中如何返回CStringArray 高手请进,初学回避! *** 我的程序退不出来了,救救我! *** 如何将SQL结果输出重定向到某个文件(如a.txt) 有大牛在嘛?怎么debug多cpu的程序啊?vs2005
在消息处理过程中,用 memcpy 函数把 lParam 填充就可以啦
========================
如果接受消息的窗口程序是你自己写的,那么你就自己处理这个自定义消息,不wp和lp只能是32位的,放指针没有什么太多用处,因为跨进程指针无效。这时可以考虑WM_COPYDATA消息
如果接受消息的窗口不是你写的,没办法。
问题是,我发消息的时候,发送端没有窗口。接收端处理后回给谁呢?
WM_GETTEXT是怎么实现的呢?
SendMessage发送WM_GETTEXT后,发现WM_GETTEXT需要进程间通信,于是创建一个内存映射文件。
对方窗体收到消息后把Text复制到内存映射文件中,返回后读取出内存映射文件的内容,复制到lParam指向的地址中,关闭内存映射文件。
我不是说发送端必须要有窗口。我以为你的意思是接收端给发送端回复消息(通过wm_copydata)。
事实上,我还是不知道怎么填充lp。望指教
int size = min(wParam - 1, _tcslen(windowtext)); // 假设windowtext是本窗口保存的字符串
memcpy((char*)lParam, (char*)windowtext, size * sizeof(TCHAR));
((LPTSTR)lParam)[size] = 0;
return size;
因为跨进程指针无效。 这句话怎么理解啊,
前段时间写了个dll,在dll中启动外部一MIS应用程序,并且在dll中给外部应用程序,发送用户名和密码,已实现自动 登陆功能啊 。
可以实现啊,用户名和密码,技术就是一个字符串变量啊。这个怎么解释呢?
可以实现啊,用户名和密码,技术就是一个字符串变量啊。这个怎么解释呢?
===================================
你用的是自定义消息吗?不是吧。