我问这个的原因是寡妇不支持在进程之间进行通信的好方法.所以我想为Windows进程之间的通信点创建一个DLL.线程由进程拥有,不能提供给另一个进程.每个线程都有自己的堆栈.如果加载了DLL(loadlibray)并且调用了一个DLL函数,它会向windows请求内存.我写的是认为线程仍然由同一进程拥有并将内存分配到同一进程中.
所以我想我可以转向程序集将一个小内存块重新分配给另一个进程.创建一个关键部分,将数据复制到另一个(已创建的)内存块,并使用out up设置窗口返回原始块到其原始进程.有没有人以前这样做过.或者是更好的方式.
最诚挚的问候,Lex Dean.
我看到其他方法相当快,但我想要一个非常快速的方法,有点头脑.管道和互联网显然会起作用,但不是最好的选择,但很容易实现(感谢提供这样的建议家伙).我想有时会以相当规律的间隔发送相当多的500字节块.我喜欢WM_COPYDATA因为它看起来很快,我在互联网上一直在寻找的最大问题是: - GetCurrentProcess和DuplicateHandle来获得真正的处理.寻找其他过程.并使用消息设置内存,然后使用WM_COPYDATA.我只需要两条消息a)指针和大小b)数据已被复制.我的应用程序过程很容易'GetCurrentProcess',除了它是一个伪句柄,总是$ FFFFFFE.我需要真正的进程句柄,互联网上没有任何正文提供DuplicateHandle的示例.这就是让我难过的原因.你能告诉我一个DuplicateHandle的例子吗,那是什么让我难过?
我不喜欢转向一个表格来获取句柄,因为一个应用程序并不总是具有当前形式.我不喜欢转向一个表格来获取句柄,因为一个应用程序并不总是具有当前形式.在Delphi中,我已经看到使用TSpeedButton发送消息,以便在应用程序之间建立一个简单的快速通信方法,我估计这些方法最常使用大约80条指令.所以我仍然想着思考dll.Mads Elvheim发送的示例与我已经知道的相同.我仍然愿意理解使用我自己的*.Dll的任何其他选项因为我的应用程序对我很重要,只需在*.DLL上注册/取消注册它自己的进程,而不是一直搜索以查看进程是否是最新的.这是我在进程之间使用*.DLL管理内存的方式,但我没有被告知.
真正的底线是访问窗口以创建一个很好的选择.因为我对想法很开放.甚至是进程之间的组装指令或Windows调用.但是我不知道通过做违法的事情让法庭崩溃.所以请举例说明你做了什么,这是我的需要.这很快,我很感兴趣,因为我最有可能会使用它.
我有一个基于命名管道的非常快速的IPC(进程间通信)解决方案.它非常快速且易于使用(它隐藏了您的实际实现.您只需使用数据包).还经过测试和验证.您可以在此处找到代码和演示.
http://www.cromis.net/blog/downloads/cromis-ipc/
它也适用于同一LAN中的计算机.
归档时间: |
|
查看次数: |
1655 次 |
最近记录: |