问题标签 [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.
winapi - 在 64 位和 32 位 (WOW64) 应用程序之间使用 WM_COPYDATA 是否安全?
这里有一个关于消息的一般使用的很好的SO Q/A 会话,以及关于这是否可以在不同 32/64 位的应用程序之间工作的“讨论”。然而,后者似乎专注于可能滥用正在传递的“数据指针”。所以,我在这里提出一个新问题。WM_COPYDATA
我正在努力让两个 Windows 应用程序相互通信/同步,作为第一轮方法,我正在使用 Windows Messaging 来实现这一点。现在一切似乎都很好……但我正在使用WM_COPYDATA
消息在应用程序之间传递信息。
我的问题:当两个应用程序具有不同的 (32/64) 位数时,这种方法是否保证安全?我已经使用下面的代码对“客户端”和“服务器”之间的 32 与 64 构建的所有四种可能组合进行了一些测试,并且都按预期工作;但这仅仅是因为我得到了“幸运”的结果(来自可能的未定义行为),还是 WOW64 系统(特别是当服务器是 64 位而客户端是 32 时)是否负责所有必要的编组?
如果有人可以确认它可以保证工作,我将非常感谢确认这一点的“官方”链接/参考。
共享头文件:
服务器程序代码(在RegisterWindowMessage(L"HANDSHAKE");
消息处理程序内):
客户端程序代码:
我特别关心客户端是 32 位但服务器是 64 位的情况;在这种情况下,它将向 32 位应用程序(尽管是 WOW64 应用程序)发送 64 位数据地址。内置的“编组”是否在 WOW64 情况下处理此问题?
javascript - 如何将 hookWindowMessage WM_COPYDATA 回调参数转换为 Electron/NodeJS 中的 JavaScript?
我们的 C++ 应用程序发送 WM_COPYDATA 消息:
在我们的 Electron 应用程序中,我们在 JavaScript 中侦听 WM_COPYDATA 消息:
我们收到消息,它给出了这个控制台输出:
我们如何在 JavaScript 中解释它,以便我们可以读取从 C++ 程序发送的字符串?
c++ - 在带有 WM_COPYDATA 消息的结构中使用 LPCTSTR 是否安全?
我有这个结构:
我准备WM_COPYDATA
像这样发送数据:
在另一端:
它工作正常。我只是想知道这样改变我的结构是否可以接受:
然后使用:
并且,一旦消息被发布和处理:
使用这种LPCTSTR
方法是否安全WM_COPYDATA
,如果是,为什么?
c# - C# 到 C++ CopyData API
我正在开发一个自动化接口程序,并希望通过使用针对 C++的COPYDATA API的机器软件来增强功能。目标是通过我自己的软件控制和报告机器的状态。
该方法使用了迄今为止我没有任何经验的指针和内存分配。
我查看了许多其他来源,例如目前没有运气的this 。我尝试了以下代码来尝试在机器软件上运行程序。
运行此代码对两者都返回 0hwnd
并且ret
机器软件没有反应。
发送命令是第一步,下一步是尝试获得响应,以便我可以监控机器状态等。
c# - C# WndProc 方法未收到预期的 Msg 类型
我一直在尝试使用其记录的 COPYDATA API 与另一个软件进行通信。用户 Xanotos在我询问的这个问题中提供了非常有用的帮助,该问题的发送方法已排序并且工作正常。我遇到的问题是接收WndProc
方法似乎没有捕捉到预期的响应。这是COPYDATA API文档的链接以供参考。
目前的方法如下。测试表明WndProc
确实收到了消息,但不是我期望的消息,即struct
取决于发送的消息。
声明:
发送方法(这些都可以正常工作并返回 true):
WndProc
方法 - 这是事情没有按预期工作的地方。调用if(m.Msg == WM_COPYDATA)
时从不返回 true 。GetPosition
这两个程序都是 32 位的。
任何想法为什么我没有收到预期的Msg
?
python-3.x - 如何在 python 中获取 WM_COPYDATA
我正在尝试用win32做一些小工作(应该是什么)。我基本上只需要发送一条消息并等待回复。
- 我需要我的 python 脚本/程序的 HWND 或窗口句柄来实际发送消息。
- 我需要从最终程序接收 WM_COPYDATA 消息。
我可以使用 ColonelFai1ure#0706 在 python discord 服务器上提供的脚本找到我的 python 程序的 HWND:
虽然我必须将我的 PyCharm 实例保留为活动窗口,但它工作正常,我现在可以使用 HWND 发送消息!
所以我发送一条消息:
有用!最终程序接收到我的消息并执行我需要它做的工作,这是输出:
现在我需要从最终程序接收 WM_COPYDATA 到我的 hwnd,我修改了一些在这里找到的 py2 代码:
不幸的是,消息永远不会出现。我正在使用 PyCharm 来运行它,如果它有所作为的话。
我现在不知道该做什么,互联网上的教程很少或用 python 2 编写。感谢任何帮助,教程链接,一些代码,任何东西。
c++ - 是否可以使用 WM_COPYDATA 发送窗口句柄?
我正在尝试使用 WM_COPYDATA IPC 方法发送 HWND。到目前为止,当发送一个字符串 LPCTSTR 时它可以工作。
但是当使用 HWND 时,消息甚至没有到达......
PVOID 应该能够指向任何 afaik。
我的 HWND 都已设置,并且上述两种方法都将 0 作为 LRESULT 返回。我该如何调试?还是有什么根本性的错误?