怎么在2进程间共享1个窗体

来源:百度知道 编辑:UC知道 时间:2024/06/26 00:11:53
我在1个DLL中装了1个键盘钩子,想在钩子拦截消息的时候调用DLL中的窗体A,具体代码入下
函数test中
{ 窗体A }
回调函数中
{A.show()想在钩子钩住的时候调用A窗体}
貌似只有通过进程间的数据共享才可以做到,不过不知道怎么共享1个窗体对象~
SendMessage貌似不能发送对象数据类型的数据~
那是个窗体对象,从内存读出来的是数据~怎么还原成窗体对象呢~从内存读出来的数据是值类型数据~
因为我是全局钩子,在回调函数中窗体中的数据无法保存,所以需要从另外个进程共享1个窗体~

你可以尝试用SendMessage向那个窗口发送消息
==========================
你告诉另外一个进程这个对象的地址就成了,另外一个对象那里可以通过读取进程地址空间来获得这个对象的地址的
=========================
读出来是值类型数据又怎样?所有数据都是值,那又怎样?对象是抽象出来的,它本身就是值数据,只不过是什么值罢了……你搞清楚这点;传过去一个对象指针,例如传过去的是CMyObject对象的指针,在另外一个进程里读了这个指针后,创建跟这个对象一样大小的存取空间,然后复制所有数据过去,这个新创建的空间的指针强制转换成CMyObject*,就可以使用了;当然,这种办法只是共享而已,如果你还想修改,那就非常复杂了,你需要把改后的数据写回去。
反正总体上说,两个进程共享一个窗体这种设计本身就很不好