Dll和另外的exe之间的通信(使用内存映射文件)
来源:互联网 发布:矩阵分解 混合模型 编辑:程序博客网 时间:2024/06/01 10:09
Dll如果需要使用到其他的exe中产生的数据可以通过使用内存映射文件来实现,下面附上代码,不过是两个exe之间的例子,原理一样。
exe1:负责写入内存
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
HANDLE hFileMap;
HANDLE hEvent;
LPBYTE pcMap;
hEvent = CreateEvent(NULL, false, false, "MyEvent");
if(hEvent == NULL)
{
printf("createEvent failed\n");
return 0;
}
hFileMap = CreateFileMapping((HANDLE)0xffffffff, NULL, PAGE_READWRITE, 0, 4 * 1024, "MyShareData");
if(hFileMap == NULL)
{
printf("createfilemapping failed\n");
return 0;
}
pcMap = (LPBYTE)MapViewOfFile(hFileMap, FILE_MAP_READ|FILE_MAP_WRITE,
0, 0, 0);
if(pcMap == NULL)
{
printf("MapViewOfFile failed\n");
CloseHandle(hFileMap);
return 0;
}
printf("begin write\n");
/*int i;
for(i = 0; i < 26; i++)
{
pcMap[i] = 'a' + i;
}*/
strcpy((char *) pcMap , "we are ready!");
//pcMap[i] = 0;
UnmapViewOfFile(pcMap);
CloseHandle(hFileMap);
SetEvent(hEvent);
CloseHandle(hEvent);
return 1;
}
exe2:负责从内心中读取数据
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
HANDLE hEvent;
HANDLE hFileMap;
LPBYTE pcMap;
hEvent = CreateEvent(NULL, false, false, "MyEvent");
if(hEvent == NULL)
{
return 0;
}
hFileMap = CreateFileMapping((HANDLE)0xffffffff,NULL,
PAGE_READWRITE, 0, 4 * 1024, "MyShareData");
if(hFileMap == NULL)
{
return 0;
}
pcMap = (LPBYTE)MapViewOfFile(hFileMap,FILE_MAP_READ|FILE_MAP_WRITE,
0, 0, 0);
if(pcMap == NULL)
{
printf("MapViewOfFile failed\n");
CloseHandle(hFileMap);
return 0;
}
WaitForSingleObject(hEvent, 3600 * 1000);
printf("the string is: %s\n",pcMap);
UnmapViewOfFile(pcMap);
CloseHandle(hFileMap);
CloseHandle(hEvent);
getchar();
return 1;
}
通过以上方式dll可以共享到exe中的数据,exe共享dll的数据也可以采用相同的方式,或者采用CWnd::OnCopyData方式。
- Dll和另外的exe之间的通信(使用内存映射文件)
- Dll和另外的exe之间的通信(使用内存映射文件)
- .exe文件和.dll文件之间的作用和关系!
- EXE和DLL之间的区别是什么?
- EXE和DLL之间的区别是什么?
- EXE和DLL之间的区别是什么?
- EXE和DLL之间的区别是什么?
- 使用ILMerge将所有引用的DLL和exe文件打成一个exe文件
- 内存映射文件的使用
- w3wp.exe和应用程序池之间的映射查询
- Windows进程通信--使用内存映射文件
- mmap的使用之两个进程通过映射普通文件实现共享内存通信
- EXE、DLL文件的脱壳
- 内存映射文件的方式进行进程间通信
- 内存映射文件的方式进行进程间通信
- 使用ILMerge合并winform生成的exe和引用的dll文件
- .net做的exe和electron做的exe之间的通信问题
- 内存映射文件的使用步骤
- 网站安全分析以及被黑处理
- 我的2011--我职业生涯的第一次跳槽
- Apache Velocity实现模板化
- .NET程序员的技能分析参考V1.0(有附件)
- 编写出色CSS代码的13个建议
- Dll和另外的exe之间的通信(使用内存映射文件)
- C# 中 for和foreach 性能比较
- VC 设置应用程序只能运行一个实例
- java环境变量 Path 与CLASSPATH
- Android 常用 mimeType 表
- 实现HBase二级索引的配置与使用--ITHBase
- 是不是选择任何一个方向,都会游向同一个宿命呢
- 初探VS2010中的Profile(性能剖析)功能
- SQL实现行列转换