在VB和VC程序间传递数据
编号:QA000445
建立日期: 1999年1月28日 最后修改日期:1999年2月8日
所属类别:
lzy:
vb6,vc6
win98
同一台机器上运行二个用户程序(vc6编译的vc.exe和vb6编译的vb.exe)有什么方法可以在二用户间交换数据?(数据很大和要求快速)。dll能成吗?请给出一个实例。一些文章介绍如下方法:首先创建一个有名的数据区。这在Visual C++中是使用data_seg pragma宏。使用data_seg pragma宏必须注意数据的初始化:
#pragma data_seg("MYSEC")
char MySharedData[4096]={0};
#pragma data_seg()
但我却无法实现,请问此方法可行吗?请详细说明。
回答:
你这个问题可以使用DLL。具体办法如下:
1、DLL部分可以用下面的代码:
#include
#include
#pragma data_seg(".MYSEC")
char MySharedData[4096]={0};
#pragma data_seg()
void __stdcall SetData(LPSTR s)
{
strcpy(MySharedData, s);
}
void __stdcall GetData(LPSTR s)
{
strcpy(s, MySharedData);
}
2、一定要写一个DLL的*.DEF文件,并加入以下内容(一点都不能省略):
SECTIONS
.MYSEC READ WRITE SHARED
EXPORTS
SetData @1
GetData @2
3、在VB和VC的exe程序中分别定义变量分配数据,使用SetData写数据,使用GetData读数据。VB和DLL间的数据交换可以参考QA000488 "在VB中如何传递指针给DLL"。
照这个步骤做应该可以获得成功,我实际做过。
此外,还有很多方法可以做这项工作,如编写ActiveX Automation Server,不过比这复杂得多。
此问题由李海回答。
| |
|
|
| |
|
|