1. 通过类工厂去完成。
a.
CoGetClassObject
Provides a pointer to an interface on a class object associated with a specified CLSID. CoGetClassObject locates, and if necessary, dynamically loads the executable code required to do this.
Call CoGetClassObject directly when you want to create multiple objects through a class object for which there is a CLSID in the system registry. You can also retrieve a class object from a specific remote machine. Most class objects implement the IClassFactory interface. You would then call IClassFactory::CreateInstance to create an uninitialized object. It is not always necessary to go through this process. To create a single object, call instead the either the CoCreateInstanceEx function, which allows you to create an instance on a remote machine. This replaces the CoCreateInstance function, which can still be used to create an instance on a local machine. Both functions encapsulate connecting to the class object, creating the instance, and releasing the class object. Two other functions, CoGetInstanceFromFile and CoGetInstanceFromIStorage, provide both instance creation on a remote system, and object activation. OLE also provides many other ways to create an object in the form of numerous helper functions and interface methods whose function is to create objects of a single type and provide a pointer to an interface on that object.
b.
IClassFactory::CreateInstance
Creates an uninitialized object.
2 通过CoCreateInstance
CoCreateInstance
Creates a single uninitialized object of the class associated with a specified CLSID. Call CoCreateInstance when you want to create only one object on the local system. To create a single object on a remote system, call CoCreateInstanceEx. To create multiple objects based on a single CLSID, refer to the CoGetClassObject function.
第二种方法就是把第一种方法的两个函数合并了。
也就是说把猫叫了个咪。
本文介绍了创建COM对象的两种主要方式:一是通过类工厂接口IClassFactory进行实例化;二是直接使用CoCreateInstance函数来创建单个对象。文章详细解释了每种方法的应用场景及其优缺点。
3446

被折叠的 条评论
为什么被折叠?



