使用 WM_COPYDATA 在进程之间发送数据

2024-04-17

我希望在进程之间发送文本。我发现了很多这样的例子,但没有一个我可以工作。这是我到目前为止所拥有的:

对于发送部分:

COPYDATASTRUCT CDS;
CDS.dwData = 1;
CDS.cbData = 8;
CDS.lpData = NULL;
SendMessage(hwnd, WM_COPYDATA , (WPARAM)hwnd, (LPARAM) (LPVOID) &CDS);

接收部分:

case WM_COPYDATA:
COPYDATASTRUCT* cds = (COPYDATASTRUCT*) lParam;

我不知道如何构建COPYDATASTRUCT,我刚刚放入了一些似乎有效的东西。调试时WM_COPYDATA案件已执行,但我又不知道该怎么办COPYDATASTRUCT.

我想在两个进程之间发送文本。

你可能会说我才刚刚开始,我在 Code::Blocks 中使用 GNU GCC 编译器,我试图避免 MFC 和依赖项。


有关如何使用该消息的示例,请参阅http://msdn.microsoft.com/en-us/library/ms649009(VS.85).aspx http://msdn.microsoft.com/en-us/library/ms649009(VS.85).aspx。您可能还想看看http://www.flounder.com/wm_copydata.htm http://www.flounder.com/wm_copydata.htm.

The dwData成员由您定义。将其视为您可以定义的数据类型枚举。它是您想要用来识别数据是这样那样的字符串的任何东西。

The cbDatamember 是指向的数据的大小(以字节为单位)lpData。在您的情况下,它将是字符串的大小(以字节为单位)。

The lpDatamember指向要复制的数据。

因此,要传输单个字符串......

LPCTSTR lpszString = ...;
COPYDATASTRUCT cds;
cds.dwData = 1; // can be anything
cds.cbData = sizeof(TCHAR) * (_tcslen(lpszString) + 1);
cds.lpData = lpszString;
SendMessage(hwnd, WM_COPYDATA, (WPARAM)hwnd, (LPARAM)(LPVOID)&cds);

然后,接收它......

COPYDATASTRUCT* pcds = (COPYDATASTRUCT*)lParam;
if (pcds->dwData == 1)
{
    LPCTSTR lpszString = (LPCTSTR)(pcds->lpData);
    // do something with lpszString...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 WM_COPYDATA 在进程之间发送数据 的相关文章

随机推荐

  • 如何显示图像

    我尝试使用 IPython display 与以下代码 from IPython display import display Image display Image filename MyImage png 我还尝试使用 matplotl
  • 匹配具有相同发音的单词elasticsearch

    我想匹配拼写不同但发音相同的单词 如 雄 与 雄 平面 与 平 我们可以在elasticsearch中进行这样的匹配吗 您可以使用语音分析插件 https github com elastic elasticsearch analysis
  • 如何完全禁用 UITextView 的滚动?

    我正在使用 UITextView 为 iPad 开发一个简单的文本编辑应用程序 我在使用 UIScrollView 和 UITextView 时总是遇到一些问题 我想我对这两个人的期望太高了 当我将 myTextView text 设置为另
  • 为什么链接时会出现多重定义错误?

    我使用这两个文件here https raw github com elanthis easylogger master easylogger h and here https raw github com elanthis easylog
  • 如何在Java中从字符串中提取多个整数? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我得到了一系列像这样的字符串 123
  • 如何解析 Perl 中的符号链接?

    我有一个象征性的名字java or jre or jre1 5 or jre1 6 or java1 5 or java1 6它将指向相应的目录 考虑到第一个实例 它看起来像 java gt usr java jdk1 5 x x 我的目标
  • NeDB中如何实现持久化存储?

    我在 node webkit 中尝试了 NeDB 它在内存数据上运行良好 但无法存储在持久存储中 绝对没有 node webkit 或 nedb 专家 但这就是我所做的并且它有效 正如 mvanderw 在评论中已经提到的 一定要确保检查自
  • 在 git 中查找文件的第一次提交

    情况 我有一个来自 github 项目的 tar gz 版本 但想弄清楚这是从哪个提交中获取的 它似乎没有被标记 或者从提交消息本身来看是显而易见的 所以我可以计算文件的 sha1 但想知道这些文件属于哪个提交 召唤 git 向导 由于 g
  • 读取图像并确定其是否损坏 C#

    如何确定作为原始字节的图像是否已损坏 是否有任何开源库可以处理 C 中多种格式的此问题 Thanks 尝试从该文件创建 GDI 位图 如果创建 Bitmap 对象失败 则您可以假设图像已损坏 GDI 支持多种文件格式 http msdn m
  • 将代码从 openCV 更新到 openCV2

    我正在尝试将 python 中的一些代码从 openCV 更新为 openCV2 原代码如下 self capture cv CaptureFromCAM 0 cv SetCaptureProperty self capture cv CV
  • 按 SQL IN() 子句中值的顺序排序

    我想知道是否有 可能是更好的方法 按 IN 子句中的值的顺序进行排序 问题是我有 2 个查询 一个查询获取所有 ID 第二个查询检索所有信息 第一个创建了我希望第二个按照其排序的 ID 顺序 ID 以正确的顺序放入 IN 子句中 所以它会像
  • Excel VBA - 1004 运行时错误、应用程序或对象定义错误

    我正在尝试浏览工作表中的一系列单元格并在每个单元格中编写一个公式 但我不断收到错误 Run time error 1004 Application defined or object defined error 代码现在看起来像这样 Sub
  • 可参数化的 JSR-303 验证值

    我使用 JSR 303 bean 验证和 Spring 3 我需要根据用例为注释提供不同的值 例如 值min参数输入 Size min 对于某些验证必须为 1 对于另一种情况必须为 5 我想从属性文件中读取此值 我知道可以从中读取消息参数V
  • C 控制台底部的输入栏

    窗底 一些应用程序 如 vim mutt aptitude 包含 用于输出的顶部窗口部分和 底部供用户输入或显示状态 假设有一个子进程用于输出 另一个子进程用于接受用户输入 目的是允许在您键入输入或查看状态的同时更新输出 Actions U
  • Access 2010编译错误用户定义类型未定义

    我将 2003 年的数据库转换为 2010 年的数据库 并且 2003 年创建的 VBA 脚本在 2010 年不起作用 我收到一条消息 指出存在 编译错误 未定义用户定义的类型 我没有 VBA 脚本编写经验 也没有创建脚本 但了解它在数据库
  • Spring - 如何注入具体的接口实现?

    我需要通过 Autowired 注入服务类的具体实现 服务接口 public interface PostService 执行 Service postServiceImpl public class PostServiceImpl imp
  • Cordova Momentum 在 iOS 溢出元素上滚动

    在 Safari iOS 浏览器中侦听滚动事件每次都会触发控制台消息 即使是在动量上 但在 cordova 构建的应用程序中 只有当滚动停止时才会触发 el with webkit overflow scrolling touch on s
  • 带有反向引用的简单 java 正则表达式不起作用

    我无法用正则表达式的反向引用替换字符串 没有任何东西被替换 我总是以我的输入结束 我的代码 String input A12 3 bla bla my input input StringUtils replacePattern input
  • Bootstrap下拉菜单三角形有何奥秘?

    我试图了解 Twitter Bootstrap 下拉菜单包含在导航栏中和不包含在导航栏中时的区别 当它们包含在导航栏中时 扩展菜单上会显示一个向上的三角形 箭头 当不使用导航栏时 不会显示该三角形 http twitter github c
  • 使用 WM_COPYDATA 在进程之间发送数据

    我希望在进程之间发送文本 我发现了很多这样的例子 但没有一个我可以工作 这是我到目前为止所拥有的 对于发送部分 COPYDATASTRUCT CDS CDS dwData 1 CDS cbData 8 CDS lpData NULL Sen