《VC进行COM编程.pdf》由会员分享,可在线阅读,更多相关《VC进行COM编程.pdf(21页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、VC?COM?2007-8-30?Click to buy NOW!PDF-XChangewww.docu-Click to buy NOW!PDF-XChangewww.docu-?COM?COM?100%?0%?Click to buy NOW!PDF-XChangewww.docu-Click to buy NOW!PDF-XChangewww.docu-?Click to buy NOW!PDF-XChangewww.docu-Click to buy NOW!PDF-XChangewww.docu-?EXE?DLL?Windows?DLL?Windows?DLL?(1)?DLL?DL
2、L?(2)?C?C?DLL?Click to buy NOW!PDF-XChangewww.docu-Click to buy NOW!PDF-XChangewww.docu-?VC?DLL?BC?extern C;?C?C?(3)?(4)DLL?EXE?DLL?EXE?DLL?DLL?DLL?DLL?COM?COM?DLL?COM?DLL?ActiveX?.ocx?DLL?DLL?COM?COM?DLL?DLL?COM?Click to buy NOW!PDF-XChangewww.docu-Click to buy NOW!PDF-XChangewww.docu-?EXE?VC?COM?C
3、OM?COM?COM?COM?COM?COM?COM?COM?COM?VC?(?C?COM?)(1)COM?C+?C+?Click to buy NOW!PDF-XChangewww.docu-Click to buy NOW!PDF-XChangewww.docu-?COM?class IObjectpublic:virtual Function1(.)=0;virtual Function2(.)=0;.;class MyObject:public IObjectpublic:virtual Function1(.).virtual Function2(.).;?IObject?MyObj
4、ect?COM?COM?COM?C+?COM?Click to buy NOW!PDF-XChangewww.docu-Click to buy NOW!PDF-XChangewww.docu-?VTable?(2)COM?IUnknown?IClassFactory?IDispatchCOM?IUnknown?IUnknown?QueryInterface?AddRef?Release?QueryInterface?AddRef?Release?COM?COM?DLL?DLL?COM?COM?COM?COM?Click to buy NOW!PDF-XChangewww.docu-Click
5、 to buy NOW!PDF-XChangewww.docu-?COM?COM?VC?AddRef?AddRef?Release?Release?QueryInterface?MSDN?AddRef?Release?IUnknown?IClassFactory?COM?COM?new?!?COM?new?128?Click to buy NOW!PDF-XChangewww.docu-Click to buy NOW!PDF-XChangewww.docu-?new?new?IClassFactory?CreateInstance?API?VC?COM?VB?IDispatch?C+?VB?
6、VJ?VBScript?JavaScript?IDispatch?:-)?COM?C+?VC?C+?VB?VB?VTable?Click to buy NOW!PDF-XChangewww.docu-Click to buy NOW!PDF-XChangewww.docu-?VJ?VBScript?JavaScript?COM?IDispatch?:-)?IDispatch?IDispatch?IDispatch?Invoke?Invoke?MS?Invoke?:-)(3)dispinterface?Dual?Custom?Click to buy NOW!PDF-XChangewww.doc
7、u-Click to buy NOW!PDF-XChangewww.docu-?ATL?-:)?IDispatch?IDispatch?VBScript?JavaScript?COM?Invoke?VTable?IDispatch?VC?Invoke?VC?VC?Click to buy NOW!PDF-XChangewww.docu-Click to buy NOW!PDF-XChangewww.docu-?IDispatch?(?dual?IDispatch?IUnknown?IDispatch?IDispatch?IUnknown?IDispatch?IUnknown?IDispatch
8、:Invoke?C+?dispinterface?IDispatch?(?)?COM?Custom?IUnknown?(4)COM?COM?DLL?Click to buy NOW!PDF-XChangewww.docu-Click to buy NOW!PDF-XChangewww.docu-?COM?DLL?COM?.?WIN32?4GB?DLL?Windows?DCOM?RPC?Windows?Click to buy NOW!PDF-XChangewww.docu-Click to buy NOW!PDF-XChangewww.docu-?DLL?COM?EXE?DLL?dllhost
9、.exe?COM?DLL?MTS?DLL?MTS?DLL?COM?COM?COM+?(5)COM?IDL?Click to buy NOW!PDF-XChangewww.docu-Click to buy NOW!PDF-XChangewww.docu-?COM?COM?C+?COM?C+?IDL?IDL?IDL?IDL?Click to buy NOW!PDF-XChangewww.docu-Click to buy NOW!PDF-XChangewww.docu-?VC?VB?DLL?(6)COM?COM?COM?IUnknown*pUnk=NULL;IObject*pObject=NUL
10、L;CoInitialize(NULL);CoCreateInstance(CLSID_Object,CLSCTX_INPROC_SERVER,NULL,IID_IUnknown,(void*)&pUnk);pUnk-QueryInterface(IID_IOjbect,(void*)&pObject);pUnk-Release();pObject-Func();pObject-Release();Click to buy NOW!PDF-XChangewww.docu-Click to buy NOW!PDF-XChangewww.docu-CoUninitialize();CoCreate
11、Instance?:CoCreateInstance(.).IClassFactory*pClassFactory=NULL;CoGetClassObject(CLSID_Object,CLSCTX_INPROC_SERVER,NULL,IID_IClassFactory,(void*)&pClassFactory);pClassFactory-CreateInstance(NULL,IID_IUnknown,(void*)&pUnk);pClassFactory-Release();.?IUnknown?CoGetClassObject?CoGetClassObject(.)/?CLSID_
12、Object?Click to buy NOW!PDF-XChangewww.docu-Click to buy NOW!PDF-XChangewww.docu-DLL?/?DLL?/?GetProcAddress(.)?DLL?DllGetClassObject?/?DllGetClassObjectDllGetClassObject?.?DllGetClassObject?DllGetClassObject(.).CFactory*pFactory=new CFactory;/?pFactory-QueryInterface(IID_IClassFactory,(void*)&pClass
13、Factory);/?IClassFactory?pFactory-Release();.CoGetClassObject?Click to buy NOW!PDF-XChangewww.docu-Click to buy NOW!PDF-XChangewww.docu-CoCreateInstance?CreateInstance?CFactory:CreateInstance(.).CObject*pObject=new CObject;/?pObject-QueryInterface(IID_IUnknown,(void*)&pUnk);pObject-Release();.?COM+?
14、COPY?CoCreateInstance?(7)?COM DLL?DllGetClassObject:?DllRegisterServer:?DllUnregisterServer:?DllCanUnloadNow:?DLLClick to buy NOW!PDF-XChangewww.docu-Click to buy NOW!PDF-XChangewww.docu-DLL?DllMain,?COM?VC?(8)?COM?GUID?COM?GUID?GUID?128?GUID?COM?DLL?CLSID?DLL?Click to buy NOW!PDF-XChangewww.docu-Click to buy NOW!PDF-XChangewww.docu-