织梦CMS - 轻松建站从此开始!

罗索

VC中调用VB写的DLL

罗索客 发布于 2007-01-21 18:13 点击:次 
VC中调用VB写的DLL,参数都以VARIANT来传递,用IDispatch接口来调用
TAG:

参数都以VARIANT来传递,用IDispatch接口来调用

HRESULT hr = NULL;
IDispatch* pIDispatch = NULL;
wchar_t progid[] = L"Component.Test"; //组件名
CLSID clsid;
hr = ::CLSIDFromProgID(progid, &clsid);
hr = ::CoInitialize(NULL);
hr = ::CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER, IID_IDispatch, (void**)&pIDispatch);
if (SUCCEEDED(hr))
{
DISPID dispid;
OLECHAR* name = L"MethodName"; //调用的函数名
hr = pIDispatch->GetIDsOfNames(IID_NULL, &name, 1, GetUserDefaultLCID(), &dispid);
if (SUCCEEDED(hr))
{
UINT iError = -1;
VARIANT rarg;
::VariantInit(&rarg);
VARIANT var[1];
::VariantInit(&var[0]);
var[0].vt = VT_I2; //参数类型
var[0].iVal = 700; //参数值

DISPPARAMS param;
param.cArgs = 1;
param.rgvarg = var;
param.cNamedArgs = 0;
param.rgdispidNamedArgs = NULL;

hr = pIDispatch->Invoke(dispid, IID_NULL, GetUserDefaultLCID(), DISPATCH_METHOD, &param, &rarg, NULL, &iError);
if (SUCCEEDED(hr))
{
//调用成功
}
::VariantClear(&rarg);
::VariantClear(&var[0]);
}
pIDispatch->Release();
} (iwgh)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/200701/6540.html]
本文出处:网络博客 作者:iwgh
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容