在VC中调用VB编写的COM组件范例
来源:互联网 发布:交互动画制作软件 编辑:程序博客网 时间:2024/04/28 12:05
VB调用VC的DLL大家应该不陌生,而VC如何调用VB编写的DLL这个问题对于搞VB开发的人来说可能却就是个问题。
为了广大的VB爱好者向VC进军,我就从VB开发者的角度来说说在VC中调用VB编写的COM组件的方法。我举个例子。
先说说VB开发一个COM组件。
用VB新建一个ActiveX DLL 工程,
然后修改工程名称为 MyVB
再修改默认的类名为 DEMO
然后再向类中添加一个函数作为测试用,如:Visual Basic CodePrivate Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" ( ByVal lpBuffer As String, nSize As Long ) As Long
'取得当前系统登陆的用户名称
Public Function GetMyName ( ) As String
Dim UserName As String
UserName = String ( 128, " " )
GetUserName UserName, 128
UserName = Trim ( UserName )
GetMyName = Left ( UserName, Len ( UserName ) - 1 )
End Function
Set MyObj = CreateObject ( "MyVB.DEMO" )
MsgBox MyObj.GetMyName
Set MyObj = Nothing
#import "C:/我的程序/VC调用COM/MyVB/MyVB.dll"
using namespace MyVB; //这里是COM组件名称
HRESULT ComInit();
#include "stdio.h"
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
ComInit();
_DEMOPtr MyObj; //注意这里,类名虽然是DEMO,但是定义声明应该是“_类名Ptr”来定义对象
MyObj.CreateInstance("MyVB.DEMO");
_bstr_t vRsinfo; //VB的String在VC里可以用_bstr_t类型,所以就用_bstr_t类型来接返回参数
vRsinfo = MyObj->GetMyName(); //这里使用对象方法取得当前用户名称
MessageBox(0, vRsinfo, "OK", MB_OK);
return 0;
}
HRESULT ComInit()
{
HRESULT hr = S_OK;
if FAILED(CoInitialize(NULL))
{
CoUninitialize();
hr = E_UNEXPECTED;
}
return hr;
}
为了广大的VB爱好者向VC进军,我就从VB开发者的角度来说说在VC中调用VB编写的COM组件的方法。我举个例子。
先说说VB开发一个COM组件。
用VB新建一个ActiveX DLL 工程,
然后修改工程名称为 MyVB
再修改默认的类名为 DEMO
然后再向类中添加一个函数作为测试用,如:Visual Basic CodePrivate Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" ( ByVal lpBuffer As String, nSize As Long ) As Long
'取得当前系统登陆的用户名称
Public Function GetMyName ( ) As String
Dim UserName As String
UserName = String ( 128, " " )
GetUserName UserName, 128
UserName = Trim ( UserName )
GetMyName = Left ( UserName, Len ( UserName ) - 1 )
End Function
然后保存工程并生成DLL文件,这时已经可以通过VB动态调用这个COM组件了。
如果在VB里,可以这样调用:
Set MyObj = CreateObject ( "MyVB.DEMO" )
MsgBox MyObj.GetMyName
Set MyObj = Nothing
这时可以看出,MyVB 是 COM 组件名称,DEMO 是 COM 组件的类名称,
而 VC 里调用可以这样做,如:
#import "C:/我的程序/VC调用COM/MyVB/MyVB.dll"
using namespace MyVB; //这里是COM组件名称
HRESULT ComInit();
#include "stdio.h"
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
ComInit();
_DEMOPtr MyObj; //注意这里,类名虽然是DEMO,但是定义声明应该是“_类名Ptr”来定义对象
MyObj.CreateInstance("MyVB.DEMO");
_bstr_t vRsinfo; //VB的String在VC里可以用_bstr_t类型,所以就用_bstr_t类型来接返回参数
vRsinfo = MyObj->GetMyName(); //这里使用对象方法取得当前用户名称
MessageBox(0, vRsinfo, "OK", MB_OK);
return 0;
}
HRESULT ComInit()
{
HRESULT hr = S_OK;
if FAILED(CoInitialize(NULL))
{
CoUninitialize();
hr = E_UNEXPECTED;
}
return hr;
}
以上 VC6 代码是建立一个 Win32 应用程序(Win32 Application),
选择 An empty project,然后再添加并添加一个 C++ Source File,
在 Windows XP 下测试通过。
- 在VC中调用VB编写的COM组件范例
- 在VC中调用VB编写的COM组件范例
- Proe二次开发中,vc调用vb编写的com
- 在vb,vc中调用vb编写的DLL
- 在vb,vc中调用vb编写的DLL
- 总结一下在VC中调用COM组件的方法+++VC调用远程COM+组件
- 在VC中使用ATL编写的COM组件
- 如何在VB中调用VC编写的DLL
- 在VC中调用COM组件的方法
- 在VC中调用COM组件的方法(转载)
- 在VC中调用COM组件的方法
- 在VC中调用COM组件的方法
- 在VC中调用COM组件的方法
- 在VC中调用COM组件的方法
- Java如何通过VC调用VB编写的COM
- Java如何通过VC调用VB编写的COM
- VC中调用COM组件的方法
- VC中调用Com组件的方法
- 新进展,模型动作解出来了~~~
- Java basic
- Web_reg_find()函数的使用
- linux内存管理 之 物理内存管理
- Android 模拟器的上使用GPS的bug
- 在VC中调用VB编写的COM组件范例
- andorid eclipse断点调试失灵
- 七夕,你拿什么拯救你的爱人?
- 推荐一系列优秀的Android开发源码
- shell 文本处理
- 代码页设置导致批处理不能运行
- BCP 命令实现SQLServer数据批量转换(转载)
- Keil C51 中的函数指针使用注意事项
- Android开发之Dialog位置以及透明度的设置