问题标签 [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.
c# - 使用窗口消息传递在 JAVA 和 C# 之间进行应用程序间通信
我需要使用来自 Java 应用程序的 Window 消息传递与 C# 应用程序通信。从我的应用程序中,我注册了用于通信的消息。我能够成功获取 C# 应用程序的窗口句柄并注册消息。C# 应用程序通过发送 WM_COPYDATA 响应消息来响应消息。我可以达到收到 WM_COPYDATA 的程度。但我不确定如何从响应消息中提取消息内容。
如果我能获得一个示例代码,它使用 jniwrap 和 winpack 库从 java 应用程序的 WM_COPYDATA 消息中读取内容,这真的很有帮助。如果 lParam 的内容是 Structure 类型会更有帮助。
我必须编辑代码以删除敏感数据
以下代码通过窗口名称获取其他应用程序的窗口句柄,注册请求和响应消息,然后发送内容为空的请求消息。
这是自定义窗口过程,它将代替我的应用程序窗口的本机过程
请帮忙。提前致谢。
delphi - WM_COPYDATA 字符串未出现在目标应用程序中
我正在尝试在 Delphi 2010 中的两个应用程序之间传递信息。
我正在使用我过去成功使用过的代码的简化版本(简化是因为我不需要发件人知道发送已成功)我已经将收到的发送归结为一对示例应用程序,其本质如下
发送
接收申请
工作测试应用程序和我添加代码的应用程序之间的主要区别在于目标应用程序中正在进行大量额外活动。尤其是在启动时。
关于为什么 WMCopyData 过程似乎根本没有触发的任何建议?
干杯
担
delphi - 带引号和不带引号的 WM_COPYDATA 产生不同的结果
使用 WM_COPYDATA 通过 Delphi XE 将命令行参数传递给另一个应用程序实例,如下所示:
如果字符串被引用/附加到,则会产生不同的结果。
如果使用#1 - 字符串是干净的,但如果没有引用,则不可用,因为文件名可以有空格,并且:
最后将被视为 3 个参数,同时使用 #2 引用字符串或附加任何 (#3, #4) 导致
multithreading - 带有隐藏窗口的线程的线程消息循环?
我有一个 Delphi 6 应用程序,它有一个线程专用于与使用 SendMessage() 和 WM_COPYDATA 消息与外部程序接口的外部应用程序进行通信。因此,我创建了一个带有 AllocateHWND() 的隐藏窗口来提供服务,因为由于 SendMessage() 函数只接受窗口句柄,而不是线程 ID,因此线程消息队列将无法工作。我不确定要在线程 Execute() 方法中放入什么。
我假设如果我使用 GetMessage() 循环或创建一个带有 WaitFor*() 函数调用的循环,线程将阻塞,因此线程的 WndProc() 将永远不会处理来自外部程序的 SendMessage() 消息对?如果是这样,放入 Execute() 循环的正确代码是什么,它不会不必要地消耗 CPU 周期,但一旦收到 WM_QUIT 消息就会退出?如有必要,我总是可以使用 Sleep() 进行循环,但我想知道是否有更好的方法。
delphi - 无法使用 WM_COPYDATA 将信息从 dll 发送到 exe
我正在尝试将一个record
从一个 dll 发送到一个 exe。
dll 是我编写的 Outlook 插件,exe 是我的主要应用程序。
我使用此示例成功地将一个record
从 exe 发送到 exe,但是当我尝试从 dll 到 exe 执行相同操作时,它不起作用。
注意:请打开链接,在那里您可以找到我正在使用的代码。该代码适用于 EXE 发件人应用程序和 EXE 发件人应用程序。这行得通。
如果我将发件人代码放入 dll 中,则该示例不再起作用。
你能提出一个解决方案吗?
filter - 从 DirectShow 过滤器 FillBuffer() 调用中调用 PeekMessage/GetMessage 是否安全?
我有一个使用 DSPACK 组件库用 Delphi 6 编写的 DirectShow 过滤器。它是一个推送源视频过滤器,它从我也编写的外部合作进程接收其源帧。
当创建并运行调用我的过滤器的 FillBuffer() 调用的工作线程时,当图形启动时,我从该工作线程做的第一件事是使用 AllocateHWND() 创建一个隐藏窗口来处理包含外部的 WM_COPYDATA 消息生成的帧。就在线程被销毁之前,我销毁了隐藏的窗口。换句话说,隐藏窗口是在调用 FillBuffer() 的工作线程的执行上下文中创建和销毁的。我的意图是让 FillBuffer() 在等待 WM_COPYDATA 或 WM_QUIT 消息时阻塞。外部合作进程将使用 WM_COPYDATA 消息和隐藏窗口的 WndProcc() 的句柄将帧提交给我的过滤器。我将在我对 pin 的 Inactive() 方法的覆盖中发布一条 WM_QUIT 消息(感谢@RomanR 的提示),
我的问题是,在这种情况下,从 FillBuffer() 调用中调用 PeekMessage() 或 GetMessage() 是否安全?或者,在 DirectShow 图形执行的上下文中是否存在由此发生的潜在缺陷?另外,您是否看到我需要考虑的整体方法中的任何缺陷?
delphi - 从 Delphi 组件中捕获 WM_COPYDATA
我正在尝试编写一个组件,通过 WM_COPYDATA 在应用程序之间发送字符串消息。我想捕获 WM_COPYDATA,但这不起作用:
大量搜索谷歌,找到了一些使用 wndproc 的参考资料。我试过了,但它也不起作用。
请帮忙,有什么问题吗?
string - WM_COPYDATA SendMessage - 它可以发送大字符串吗?
我将不得不WM_COPYDATA
在 2 个应用程序之间实现 IPC。我在互联网上似乎有样本,但它们都只发送少于 255 个字符的字符串。
我想使用 . 向另一个进程发送一个大字符串(超过 1k)WM_COPYDATA
。是否可以?有什么限制?我应该发送流而不是字符串或记录吗?
这两个应用程序都是我使用 Delphi 2010 开发的。
delphi - WM_COPYDATA:接收方可以修改COPYDATASTRUCT的内容吗?
我正在尝试在 Delphi 中的两个 Windows 应用程序之间进行通信。发送者使用 WM_COPYDATA 通过 SendMessage 发送命令。那部分工作正常。接收方是否可以在同一个调用中回复一些结果字符串?它对我来说失败了,下面是现在正在发生的事情。
发送方使用 WM_COPYDATA 使用阻塞调用 SendMessge 向接收方发送命令。
接收方处理命令并使用一些结果字符串修改 COPYDATASTRUCT,这些结果字符串必须发送回发送方并退出事件处理程序
Receiver 的“SendMessage”函数返回,但 COPYDATASTRUCT 的内容仍然没有改变。
显然,Windows 的消息传递机制没有在两个应用程序之间共享 COPYDATASTRUCT 内存。相反,它正在制作副本。
delphi - 从 vb6 到 delphi 的带有 WM_COPYDATA 的发送消息是乱码
我正在使用来自 vb6 应用程序的 WM_COPYDATA 将数据发送到 delphi 应用程序。在我本地为英语的系统中,我正确接收数据,但在另一个使用荷兰语本地的系统上,接收文本是乱码。
接收应用程序是delphi,代码是
编辑
这是发送数据的vb6代码,发送的数据是字符串
谁能告诉我做错了什么?