使用注册COM 组件 方法
2011-05-21 10:58
453 查看
使用注册COM 组件 方法
1.首先导入DLL
#import "MMGifCtrl.dll" no_namespace
2.确保DLL已经被注册,注册DLL的代码如下:
3. 获得COM的接口
4. 获得了 IMMGifCtrl接口,就可以干活啦!
1.首先导入DLL
#import "MMGifCtrl.dll" no_namespace
2.确保DLL已经被注册,注册DLL的代码如下:
//这里注册dll, 这行语句会弹DOS窗口,下面的代码不会 SHELLEXECUTEINFO ShExecInfo = {0}; ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO); ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS; ShExecInfo.hwnd = NULL; ShExecInfo.lpVerb = TEXT("open"); ShExecInfo.lpFile = TEXT("regsvr32.exe"); CString strParam = TEXT("/"") + theApp.strRootDirectory + TEXT("//MMGifCtrl.dll/" /s"); ShExecInfo.lpParameters = strParam; wchar_t szBuf[MAX_PATH]; GetSystemDirectoryW(szBuf, MAX_PATH); ShExecInfo.lpDirectory = szBuf; ShExecInfo.nShow = SW_HIDE; ShExecInfo.hInstApp = NULL; ShellExecuteEx(&ShExecInfo); // 指定时间没结束 if (WaitForSingleObject(ShExecInfo.hProcess, 5000) == WAIT_TIMEOUT) { // 强行杀死进程 TerminateProcess(ShExecInfo.hProcess, 0); _com_issue_error(hr); }
3. 获得COM的接口
IMMGifCtrl * pShowGif = NULL; HRESULT hr; hr = ::CoCreateInstance(__uuidof(CMMGifCtrl), NULL, CLSCTX_INPROC, __uuidof(IMMGifCtrl), (LPVOID*)&pShowGif); if(FAILED(hr)) { //说明COM没有被注册,在此用代码注册 COM }
4. 获得了 IMMGifCtrl接口,就可以干活啦!
相关文章推荐
- ATL使用.rgs注册脚本文件操作注册表注册Com组件
- 组件的几种方法VC中使用COM
- COM 组件注册方法
- Regasm组件注册工具使用方法
- .NET+COM+组件注册方法
- 不使用第三方组件,只调用COM,导出EXECL,但只装OFFICE2007,不装2003,直接强制引用动态库的方法
- 使用COM或者OLE的方法调用来控制Excel或者其他Office组件
- 使用use注册Vue全局组件和全局指令的方法
- 使用WORD时,出错,提示:检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败解决方法
- Regsvr32(windows注册/卸载组件)的使用方法详细说明
- Regasm组件注册工具使用方法
- COM 组件注册方法
- COM 组件注册方法
- 使用Geoprocessor导出ArcSde中的数据,对COM 组件的调用返回了错误 HRESULT E_FAIL 的解决方法
- AspJpeg组件:介绍、注册、高级使用方法 [精]
- RegAsm注册DLL组件使用jacob调用的问题com.jacob.com.ComFailException: Can't co-create object
- 免注册COM的使用方法
- 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败解决方法
- Tomcat服务启动限制日志过大的方法、使用管理员启动,注册服务删除服务
- 在VC中使用代码组件的三种方法