VB创建ActiveX dll 的COM服务器,VC调用VB COM方法

1.用VB创建ActiveX类型的工程,重命名工程 和 模块名为 VBPrj、MATH

MATH.cls代码

Public Sub SayHello()
    MsgBox "Hello", vbOKOnly, "VB ActiveX"
End Sub

Public Function Info() As String
    Info = "info from VB COM"
End Function

2.生成VBPrj.dll

3.用VC创建一个Win32 Console的空项目,添加VCcall.cpp文件,代码如下:

//VCcaller.cpp 
#include <stdio.h>
#import "../VBPrj.dll" //import dll
#include <atlbase.h> 
#include   <comutil.h> 
#pragma   comment(lib, "comsupp.lib ") 
void test()
{
	::CoInitialize(0);
	VBPrj::_MATHPtr ptr("VBPrj.MATH");
	ptr->SayHello();

	_bstr_t ret=ptr->Info();
	printf("%s\n",(char*)ret);

	ptr=NULL;
	::CoUninitialize();
}
int main()
{
	test();
	return 0;
}
连接COM的另一种方式:
void test()
{
	::CoInitialize(0);
	//VBPrj::_MATHPtr ptr("VBPrj.MATH"); //Prog 方式
	VBPrj::_MATHPtr ptr;
	ptr.CreateInstance(__uuidof(VBPrj::MATH));//guid方式
	ptr->SayHello();

	_bstr_t ret=ptr->Info();
	printf("%s\n",(char*)ret);

	ptr=NULL;
	::CoUninitialize();
}

小技巧:

在#import "../VBPrj.dll" //import dll后,写其他调用代码前,先编译一次工程,使得dubug目录下生成VBPrj.tlh、VBPrj.tli文件,这样IDE输入就能智能联想,减少错误。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
定义: 这是一款桌面级的WEB服务器 包含一个静态的http服务器与一个js脚本引擎 可以展示静态的网页与生成简单的动态页面 适合个人在windows服务器上面简单的建立http服务 支持情况: 静态http session application(仅仅能存取文本) 服务端执行的js脚本 数据库访问(反正ODBC支持的库都支持) 自定义的com组件引用 简易说明: 1 建立站点 打开编辑 设置 输入站点名称与路径 点击添加即可建立一个站点 如: myweb c: www 注意路径要以 结尾 在站点根目录下添加filter sjs与endfilter sjs(这是两个必须的过滤器 如无需写代码放两个空文件即可) 2 静态资源与动态页面 在server sjs里的server execFileTypes定义可以配置将哪些文档类型作为动态页面 当请求静态资源时会直接返回资源 当请求一个动态页面时 请求会依次在filter sjs 请求页面 endfilter sjs 进行转发 当然也可以在filter sjs里写代码来终止转发 动态页面中如果文档类型为 sjs服务器将识别为纯的服务端执行js脚本(好比servlet什么的) 在其他类型的动态页面文档中 目前有3种类型嵌入标签可用: <%c %>标签表示嵌入一段服务端执行js脚本 如:<body><%c response responseText+ "hello js"%>< body> 将返回页面<body>hello js< body> <%i %>标签表示引用资源 如:<%i src "parts part htm"%> <% %>标签表示插值 如:<body><% "hello js"%>< body> 将返回页面<body>hello js< body> 3 com组件引用 为了让web应用有更多功能扩展 该服务器可以在脚本中引用其他com组件 这里有2种引用方法 一种方法在设置里面添加引用变量名 组件名 引用类型;来添加其他com组件的引用 组件名写成 组件工程名 组件类名 形式 就像使用CreateObject时一样 引用类型可写sing与muti 其中sing为所有请求共用一个组件实例对象 muti为每个请求引用独立的组件实例对象 另外还可以在代码里使用objectLoader loadComObject attr comNm 来添加组件引用 attr为引用变量名 comNm为组件名 注意:一个新的组件在引用前应先用regsvr32 dll注册">定义: 这是一款桌面级的WEB服务器 包含一个静态的http服务器与一个js脚本引擎 可以展示静态的网页与生成简单的动态页面 适合个人在windows服务器上面简单的建立http服务 支持情况: 静态http session application(仅仅能存取文本 [更多]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值