我问这个问题的原因是寡妇不支持进程间通信的好方法。所以我想为Windows进程之间的通信点创建一个DLL。线程由一个进程拥有,不能交给另一个进程。
每个线程都有自己的堆栈。
如果加载 DLL (loadlibray) 并调用 DLL 函数,该函数会向 Windows 请求内存。我写信是为了认为线程仍然由同一进程拥有并将内存分配到同一进程中。
所以我在想我是否可以转向汇编来将一个小内存块重新分配给另一个进程。创建一个关键部分,将数据复制到另一个(已创建的)内存块,然后返回到原始块到其原始进程,而无需设置窗口。以前有人这样做过吗?或者是更好的方法。
此致,
莱克斯·迪恩.
我看到其他方法速度相当快,但我想要一种非常快速且开销很小的方法。管道和互联网显然可以工作,但不是最好的选择,但实施起来很简单(感谢提供此类建议的人)。有时我想以相当规律的间隔发送相当多的 500 字节块。我喜欢 WM_COPYDATA 因为它看起来很快,我在互联网上查找的最大问题是:- GetCurrentProcess 和 DuplicateHandle 来获取真正的句柄。寻找其他进程。并使用消息来设置内存然后使用WM_COPYDATA。我只需要两条消息a)指针和大小b)数据已被复制。
我的应用程序进程很容易“GetCurrentProcess”,除了它是一个伪句柄,它总是 $FFFFFFE。我需要真实的进程句柄,但互联网上没有人给出 DuplicateHandle 的示例。这就是让我难住的原因。你能给我看一个 DuplicateHandle 的例子吗?这就是让我困惑的地方?
我不喜欢通过表格来获取句柄,因为一个应用程序并不总是有当前的表格。
我不喜欢通过表格来获取句柄,因为一个应用程序并不总是有当前的表格。
在 Delphi 中,我看到使用 TSpeedButton 发送消息,以在应用程序之间建立简单的快速通信方法,我猜它很可能使用大约 80 条指令。所以我仍然考虑考虑dll。 Mads Elvheim 发送的示例与我已经知道的处于同一行。
我仍然愿意了解使用我自己的 *.Dll 的任何其他选项
因为对我来说很重要的应用程序可以简单地在 *.DLL 上注册/取消注册它自己的进程,而不是一直搜索以查看进程是否是当前的。
这就是我在进程之间使用 *.DLL 管理内存的方式,但我没有被告知。
对我来说,实现 DLL 并不难,因为我已经有自己的一个正在运行。
真正的底线是访问Windows来创建一个好的选择。因为我对想法非常开放。甚至是进程之间或 Windows 调用的汇编指令。但我不知道通过做非法的事情来让法庭撞毁窗户以太。
因此,请举例说明您所做的满足我的需要的事情。这很快,我很感兴趣,因为无论如何我很可能会使用它。
我有一个基于命名管道的非常快速的 IPC(进程间通信)解决方案。它非常快并且非常易于使用(它向您隐藏了实际的实现。您只需处理数据包)。也经过测试和证明。您可以在这里找到代码和演示。
http://www.cromis.net/blog/downloads/cromis-ipc/ http://www.cromis.net/blog/downloads/cromis-ipc/
它还可以在同一 LAN 中的计算机之间运行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)