如何使用COM 目前我手头只有有一个DLL,在VC的Object Viewer中可以看到所有的方法。但是不知道怎样使用此COM能不能给点提示?如果有例子就更好了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你确认这是个COM组件而不是普通DLL?先regsvr32这个DLL,然后在注册表里面找到CLSID,然后CoCreateInstance(CLSID). 确认是COMCLSID已经拿到,但是不知道怎么调用里面的方法,能不能给点提示?没有用过COM啊,多谢了 #include "stdafx.h"#include <iostream>using namespace std;#import "ATLSimple.dll" no_namespace#include <atlbase.h>int _tmain(int argc, _TCHAR* argv[]){ ::CoInitialize(NULL); CComPtr<IAddData> spAddData; HRESULT hr = spAddData.CoCreateInstance(__uuidof(AddData)); if ( FAILED(hr) ) { cout << "接口创建失败!"<<endl; return -1; } BSTR bstr = ::SysAllocString(L"aaaa"); spAddData->AddDatas(bstr); ::SysFreeString(bstr1); spAddData.Release(); ::CoUninitialize(); return 0;}注:1。ATLSimple.dll是你的组件(别忘了copy到你的当前工程下一个) 2。IAddData是ATLSimple一个接口,用ATL的CComPtr智能指针包一下然后使用,比较方便 3。AddDatas是IAddData的一个方法。 内存管理的效率讨论,望大侠们指点一下! 有什么办法可以捕获环回接口上的数据包 登录局域网中的其他机子 如何在ActiveX控件中获得IE地址栏中的地址??谢谢! 利用csdn论坛的xml的技术,是否可以在浏览器上画出曲线图?就像股票k线图? 谁知道为什么VNC经常出现不能连接上服务器的情况??? 如何在程序中切换按钮上的位图 从Access转向Oracle的具体步骤 毒龙700有没有二级缓存,有的话多大? 禁用菜单 孙鑫教程 请问大家如何更改VC6.0中F1键的关联? 有谁知道bt,emule使用的是什么安装软件么?
CLSID已经拿到,但是不知道怎么调用里面的方法,能不能给点提示?
没有用过COM啊,多谢了
#include <iostream>
using namespace std;#import "ATLSimple.dll" no_namespace
#include <atlbase.h>int _tmain(int argc, _TCHAR* argv[])
{
::CoInitialize(NULL); CComPtr<IAddData> spAddData;
HRESULT hr = spAddData.CoCreateInstance(__uuidof(AddData));
if ( FAILED(hr) )
{
cout << "接口创建失败!"<<endl;
return -1;
} BSTR bstr = ::SysAllocString(L"aaaa"); spAddData->AddDatas(bstr); ::SysFreeString(bstr1); spAddData.Release();
::CoUninitialize();
return 0;
}注:1。ATLSimple.dll是你的组件(别忘了copy到你的当前工程下一个)
2。IAddData是ATLSimple一个接口,用ATL的CComPtr智能指针包一下然后使用,比较方便
3。AddDatas是IAddData的一个方法。