DLL中可以建线程与主程序通信吗?

时间:2022-03-16 11:00:25
我现在有一个主程序,要调用一个DLL,现在想让主程序与DLL之间进行数据通信,该怎么实现呢?要建全局变量还是自定义消息?消息是不是也得是全局的呢?

8 个解决方案

#1


当然可以通信了,就和exe内部的线程间通信没什么区别。发消息,全局变量都可以。

#2


dll中使用指针作为参数,传递指针就可以啊

#3


当然可以了,dll在exe的空间里

#4


如果是dll到exe,就用回调。双向的可以用共享内存。

#5


程序运行的时刻,所谓的DLL实际上就是主程序的一部分,访问内存等资源与主程序完全没有分别,对于界面可以设自定义消息,但要保证自定义消息两边的一致性,至于全局变量,因为主程序EXE和DLL不是用链接的方式编译到一起,因此,很难用全局变量的方式;但可以在DLL中设置一个函数,由主函数调用去设置主程序中相关变量或对象的指针,以此获取主程序中相关变量或对象的内存地址,进而进行操纵,这是可以的

#6


怎么设置全局变量呢?要包含头文件吗?那样会不会影响到封装性呢?

引用 1 楼  的回复:
当然可以通信了,就和exe内部的线程间通信没什么区别。发消息,全局变量都可以。

#7


其实我还是不大明白这两个之间算是线程间通信还是进程??

#8


如果是HOOK注入的话,那就是进程间通信了.DLL所使用的内存也就是宿主的内存空间

#1


当然可以通信了,就和exe内部的线程间通信没什么区别。发消息,全局变量都可以。

#2


dll中使用指针作为参数,传递指针就可以啊

#3


当然可以了,dll在exe的空间里

#4


如果是dll到exe,就用回调。双向的可以用共享内存。

#5


程序运行的时刻,所谓的DLL实际上就是主程序的一部分,访问内存等资源与主程序完全没有分别,对于界面可以设自定义消息,但要保证自定义消息两边的一致性,至于全局变量,因为主程序EXE和DLL不是用链接的方式编译到一起,因此,很难用全局变量的方式;但可以在DLL中设置一个函数,由主函数调用去设置主程序中相关变量或对象的指针,以此获取主程序中相关变量或对象的内存地址,进而进行操纵,这是可以的

#6


怎么设置全局变量呢?要包含头文件吗?那样会不会影响到封装性呢?

引用 1 楼  的回复:
当然可以通信了,就和exe内部的线程间通信没什么区别。发消息,全局变量都可以。

#7


其实我还是不大明白这两个之间算是线程间通信还是进程??

#8


如果是HOOK注入的话,那就是进程间通信了.DLL所使用的内存也就是宿主的内存空间