纯手工代码使用COM/ActiveX控件(如何不通过注册表)
2007-03-01 12:43
716 查看
#include "objbase.h" #include "atlcomcli.h" #include "limits" #import "msscript.ocx" no_namespace //定义工厂方法签名 extern "C"{ typedef HRESULT (__stdcall *FuncDllGetClassObject)(REFCLSID rclsid,REFIID riid,LPVOID * ppv);} struct IScriptControl; int _tmain(int argc, _TCHAR* argv[]) { try { //初始化 ::CoInitialize (NULL); HMODULE h=::LoadLibrary("msscript.ocx"); if(h==NULL)return 0; FuncDllGetClassObject func=(FuncDllGetClassObject)::GetProcAddress(h,"DllGetClassObject"); if(func==NULL)return 0; IClassFactory *pFactory=NULL; func(__uuidof ( ScriptControl ),IID_IClassFactory,(void**)&pFactory); if(pFactory==NULL)return 0; IScriptControl *pScript=NULL; //下面的代码实现效果和本行效果一样:pFactory->QueryInterface(__uuidof(IScriptControl) , (void**)&pScript); //可以从注册表例看到该接口的IID为:0e59f1d3-1fbe-11d0-8ff2-00a0d10038bc IID id;//=__uuidof(IScriptControl); id.Data1=0x0e59f1d3; id.Data2=0X1fbe; id.Data3=0X11d0; id.Data4[0]=0X8f; id.Data4[1]=0Xf2; id.Data4[2]=0X00; id.Data4[3]=0Xa0; id.Data4[4]=0Xd1; id.Data4[5]=0X00; id.Data4[6]=0X38; id.Data4[7]=0Xbc; //下面行的效果等于本行效果:pFactory->CreateInstance(NULL,__uuidof(IScriptControl) , (void**)&pScript); pFactory->CreateInstance(NULL,id , (void**)&pScript); pFactory->Release(); pScript->put_AllowUI(VARIANT_FALSE); pScript->PutLanguage(L"JScript"); _variant_t v=pScript->Eval("1+2+3+4+5"); int i=pScript->Release(); ::FreeLibrary(h); ::CoUninitialize(); return 0; } catch(...) { //::FreeLibrary(h); ::CoUninitialize(); } }
相关文章推荐
- 通过测试和代码告诉你Maven是如何使用mirror和repository的
- Xcode5 使用gitHub上库的SSH地址建立Repository,以及如何通过Xcode把代码传到GitHub
- 如何通过命令行或者使用代码打开一个apk文件
- 如何通过修改注册表来禁止使用注册表编辑器
- 如何通过修改注册表来禁止使用U盘
- 如何通过代码控制软件键盘的显示与隐藏(InputMethodManager 的使用)
- 如何通过代码获取word文档使用的语言
- 通过测试和代码告诉你Maven是如何使用mirror和repository的
- 如何通过命令行或者使用代码打开一个apk文件
- 通过测试和代码告诉你Maven是如何使用mirror和repository的---学习笔记
- winform程序如何通过操作注册表来实现限制使用次数
- 如何通过代码查看JVM堆和非堆的使用情况
- [ActiveX]VS2005如何制作ActiveX控件(与及通过 ActiveX控件上传本地图片的代码)
- c++builder上使用TIDTCPServer和TIDTCPClient进行简单通信,如何通过代码动态设置TIDTCPServer的Bindings属性。
- 通过测试和代码告诉你Maven是如何使用mirror和repository的
- 如何通过使用匿名内部类来将线程代码隐藏在类中
- 通过测试和代码告诉你Maven是如何使用mirror和repository的
- 如何通过代码判断当前使用的是什么浏览器(各个平台)
- 如何使用vs对程序进行打包?怎么通过注册表获取安装路径?
- [ActiveX]VS2005如何制作ActiveX控件(与及通过 ActiveX控件上传本地图片的代码) .