热情软件屋

 

在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,不过比这复杂得多。

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio