我是新手
请问各位在VC中有几种方法使用COM组件谢谢
请问各位在VC中有几种方法使用COM组件谢谢
解决方案 »
- 动态创建数组为什么不成功
- 用 _ConnectionPtr 连接了远程数据库后 如何时时判断是否连接??
- 后台执行程序加载dll的问题
- 大家骂我吧,孩子已经姓王了,叫王宏力,我实在拗不过我老婆。我对不起我的爸爸,爷爷和祖上,吕姓从我这断开了
- CInternetSession::OpenURL(...) 连续运行几次后,程序就不能运行
- 如何使一个程序监控另一个程序,如果崩溃就自动重启,分不是问题
- 修改DirectShow中一个Filter例子DSNetWork,将其应用于视频会议
- 有关安装nt server的问题
- wince 怎么修改控件字体,例如加粗、加大
- 不显示删除回复显示所有回复显示星级回复显示得分回复 请高手帮完成:入力框A,B,C,入力A,C使用函数atoi,判断是否成功。判断B是+或-。点OK按钮,计算
- 大家来讨论一下madn的使用吧?
- 请问怎样获取托盘窗体的句柄??(给一百分)
直接加载的方法,其实是使用任何dll的方法。要知道com可以存在于exe中甚至远程计算机上。
CoCreateInstance的方法比较常用。其实对于使用者来讲,很简单,知道头文件,也就知道哪些方法可用。
1.创建com实例,相当于c++中创建一个类对象那样。当然有时要先创建类厂,然后才创建com组件实例。
2.使用实例指针QueryInterface查询你所要的接口,这个接口就是一个函数指针数组
3.调用接口中的某个函数实现你要的功能。就这样简单,除创建com组件的方法外,你完全认为自己在使用一个类
IInterface* pInterface;
HRESULT hResult = ::CoCreateInstance(CLSID, NULL, CLSCTX_INPROC_SERVER, IID, (void**)&pInterface);
// ...
pInterface->Release();// method 2:
STDAPI CoGetClassObject(
REFCLSID rclsid, //CLSID associated with the class object
DWORD dwClsContext,
//Context for running executable code
COSERVERINFO * pServerInfo,
//Pointer to machine on which the object is to
// be instantiated
REFIID riid, //Reference to the identifier of the interface
LPVOID * ppv //Address of output variable that receives the
// interface pointer requested in riid
);// method 3:
ItfPtr pItf = NULL;
HRESULT hResult = pConn.CreateInstance(const CLSID);
然后通过包裹类对com组件进行控制。
跟vb里一样简单!推荐使用这个吧
#import ....dll 好象很复杂 里面的NAMESPACE 是什么意思如果不用#import
还有其他什么方法谢谢了对了
请各位告诉我怎么结贴 给分