问题标签 [wm-copydata]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
544 浏览

c# - 为什么 WM_COPYDATA 不传递 C# 字符串数据

我需要将一个类的对象从一个程序传递到另一个程序。

这是我需要通过的课程;

复制数据结构类;

我如何发送对象;

在另一个应用程序上;

我在目标应用程序上获得了除“字符串”数据类型(“Test123”)之外的所有数据。将“数据”留空。

没有错误,两个应用程序都可以工作。对象被传输,但在字符串变量上没有数据。

请帮助我

0 投票
2 回答
3470 浏览

postmessage - 如何使用带有 WM_COPYDATA 的 PostMessage 发送字符串消息

我有两个 Windows 应用程序。第一个是 Windows 窗体应用程序。第二个是控制台应用程序。我必须从控制台应用程序向表单应用程序发送一条消息。我注册了广播消息并使用 ::PostMessage 函数能够将数字消息发送到表单应用程序。但我无法发送字符串消息。请在下面找到我的代码:-

请帮助我了解我做错了什么并使其正常工作

0 投票
1 回答
2038 浏览

c# - 为什么提供数据有效负载时未收到 WM_COPYDATA 消息?

我有一个非常知名的使用(丑陋的)WM_COPYDATA消息进行进程间数据交换的设置。这不是我的决定,我必须在旧版应用程序中支持它。

如果我只发送一个普通的结构,而不附加其他数据,它就可以正常工作:

在接收方(外部 WinForms 应用程序),我收到此消息并且可以正确读取该dwData字段:

但是,一旦我附加了一些额外的有效负载,外部应用程序就会停止接收此消息。m.Msg == WM_COPYDATA条件始终在false接收者窗口过程中,发送者0SendMessage调用中获得结果。

(实际上,这是一个虚拟有效载荷,但与真实有效载荷相同。)

我还尝试通过将最后一个参数类型更改为来COPYDATASTRUCT手动(使用)编组Marshal.StructToPtrSendMessageIntPtr不幸的是没有成功(相同的行为)。

COPYDATASTRUCT我试图通过更改定义来依赖 CLR 编组:

你猜怎么着?没有效果。

我的设置有什么问题?为什么将有效负载附加到数据结构时无法接收到消息?

0 投票
1 回答
70 浏览

pointers - 如何读取其他进程内存

所以,我有一个类使用 WM_COPYDATA 来允许应用程序进行通信。

发送申请:

接收申请:

问题是,如果我将 TypeInfo 和记录一起发送,我将无法读取第二个。如果我单独发送它们,我可以阅读 TypInfo 或记录。我应该修复什么才能使其正常工作?

0 投票
1 回答
118 浏览

string - 如何在应用程序之间发送包含字符串的记录

所以,我有一个类使用 WM_COPYDATA 来允许应用程序进行通信。

发件人申请:

接收器应用程序:

Name: string[255];问题是当我更改为Name: string;in时发生崩溃TMyRec。我该如何克服呢?我不想编辑我的所有记录以将字符串更改为其他内容,并且我希望有一个功能来发送所有类型的记录(就我的想法而言,它们都不包含对象)。

已编辑:使用 Remy 提供的答案并进行了一些调整,因此我可以仅使用一个 SendRecord 函数发送任何类型的记录:

发件人:

0 投票
1 回答
653 浏览

api - 为什么我找不到窗口?

我使用示例在两个应用程序之间发送字符串。

当我第一次按下发送按钮时,字符串被发送到接收器,但只接收到字符串的一部分。

当我第二次按下发送按钮时,我得到“找不到窗口!”。窗口就在屏幕上。为什么我第一次按下按钮时它可以工作,但第二次却没有?


这是发件人:

这是接收器:

0 投票
2 回答
887 浏览

delphi - 通过 WM_COPYDATA 在不同 Delphi 版本应用程序之间传输数据

我试图让 Delphi 应用程序通过 WM_COPYDATA 相互通信。我遇到的问题是发送方应用程序是用 Delphi 7 编写的,而接收方应用程序是用 Delphi 10.2 编写的。我将我的 Delphi 7 程序代码复制到 Delphi 10 中,并且通信运行良好。然而,在 Delphi 7 中使用完全相同的代码导致我的字符串被传递给接收器应用程序被破坏。我使用的代码如下:

我有一个发送方:

在接收方,我有:

我究竟做错了什么?或者为什么当从 Delphi 7 编写的 SenderApp 而不是从 Delphi 10 编写的 SenderApp 发送时消息字符串被破坏?

0 投票
1 回答
355 浏览

c++ - 复制数据结构,WM_COPYDATA

我正在尝试在两个程序之间发送数据,WM_COPYDATA但我的定义有问题COPYDATASTRUCT

这是错误:

在此处输入图像描述

这是代码:

0 投票
1 回答
447 浏览

c# - Marshall struct 通过 sendmessage 将其传递给 delphi 记录

我正在尝试通过 c# 将结构传递给 delphi,我已经完成以下操作来传递消息,我按照 pinvoke 的格式从https://www.pinvoke.net/default.aspx/Structures.COPYDATASTRUCT复制 datat 结构,但在德尔福我没有收到任何消息。在某种程度上,我相信这是因为我没有以正确的方式对结构进行编码。当我只传递一个字符串消息时,我会收到它,但是当我尝试传递结构时,什么都没有

这是我到目前为止所做的。

}

0 投票
1 回答
276 浏览

c++ - 如何解决“接收器应用程序通过 WM_COPYDATA 获取空消息”问题?

我正在用 C++ 编写一个应用程序,它将向用 Delphi 编写的应用程序发送一条消息。

这是我的接收器应用程序:

图片

单击按钮时,Edit1.TextShellExecute()作为命令行参数发送到发送方应用程序 (C++)。

发送方应用程序会将参数作为WM_COPYDATA消息发送回接收方应用程序,接收方应用程序将在Edit2文本框中显示该参数。

这是 Delphi 应用程序的代码(Delphi 10.3 Rio):

这是我的 C++ 应用程序的代码(Code::Blocks IDE):

问题是Edit2文本框什么也没显示。

顺便说一句,我在这个网站上对WM_COPYDATA. 但是,尽管存在这种情况,但我自己无法解决我的问题。

那么,我应该怎么做才能解决我的问题?