请问VB开发了一个组件,如何用VC调用.谢谢. 本人买了一个DNS的组件,是用VB开发的,请问如何在VC下调用.在ASP中是直接注册组件就可以用的.但在VC下要怎么调用呢,请问高手,组件名:LQSL.DLL 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先regsvr32, 然后在project => add to project => components and control => 选已注册选你已加入的组件 ASP可以用,VC当然也可以啦。1、注册组件2、在菜单Project->Add to project->Components and Controls 不行呀,注册了,可是在Project->Add to project->Components and Controls,里面找不到我注册的组件呀 或者直接将控件放入到 WINDOWS/SYSTEM32 目录下再试试看 不是吧,在那里只能插入ocx的控件,而不能加入DLL组件的呀。 使用IDispatch接口中的Invoke来调用 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, ¶m, &rarg, NULL, &iError); if (SUCCEEDED(hr)) { //调用成功 } ::VariantClear(&rarg); ::VariantClear(&var[0]); } pIDispatch->Release();} WTL 对话框如何加入工具栏?还有工具栏按钮设置背景等。。 javascript能不能访问物理内存? 新手提问:关于 消息死锁 VC编绎问题(能正常运行,但单步跟踪却如下提示ntdll.dll: no matching symbolic information ) ATL OLE DB 的一个具体问题 非激活窗口绘图问题 一个计算机大师的人生教训(献给这里的所有人) 请问各路高手,如何查看内存信息? 有关添加一个新类的问题,恳请指教,万分感谢!! 已知钩子句柄的情况下,如何分析出钩子的类型 Release版本和 Debug版本不一致怎么办呢? 如何在文本框中调用WINDOWS的写字板程序
1、注册组件
2、在菜单Project->Add to project->Components and Controls
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, ¶m, &rarg, NULL, &iError);
if (SUCCEEDED(hr))
{
//调用成功
}
::VariantClear(&rarg);
::VariantClear(&var[0]);
}
pIDispatch->Release();
}