• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 用IDispatch的方法创建Outlook或者Word失败!有没有遇到过这种情况的???

用IDispatch的方法创建Outlook或者Word失败!有没有遇到过这种情况的???

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了 用IDispatch的方法创建Outlook或者Word失败!有没有遇到过这种情况的???等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 用IDispatch的方法创建Outlook或者Word失败!有没有遇到过这种情况的???
描述:


CoInitialize(NULL);
HRESULT hr = S_OK;
IUnknown* pUnknown=NULL;
IDispatch* pOutlook = NULL;
CLSID clsid;
//wchar_t* pwstrSid=L"Outlook.Application";
wchar_t* pwstrSid=L"Word.Application";
hr = CLSIDFromProgID(pwstrSid,&clsid);
LPOLESTR strFunc = L"CreateItem";
if(SUCCEEDED(hr))
{
hr = CoCreateInstance(clsid,NULL,CLSCTX_ALL,IID_IUnknown,reinterpret_cast<void**>(&pUnknown));
if(SUCCEEDED(hr))
{
hr = pUnknown->QueryInterface( IID_IDispatch,(void**)&pOutlook);
pUnknown->Release();  
                        ....
                }

Query IDispatch 的时候失败(Word和Outlook都这样)。返回E_NOINTERFACE的错误。有没有高手知道原因?
开发环境是:Office2003
另外,我不能用#import的方式,所以各位就不要提醒我用#import了。


解决方案1:

8-)

解决方案2:

把CLSCTX_ALL换成CLSCTX_LOCAL_SERVER试试, 直接在CoCreateInstance的时候请求IDispatch接口, 执行完后WINWORD.EXE就应该启动了

解决方案3:

int _tmain(int argc, _TCHAR* argv[])
{
// get word document CLSID
CLSID clsidWord;
::CLSIDFromProgID(OLESTR("Word.Application"), &clsidWord);
::OleInitialize( 0 );
HRESULT hr;
// start winword server
LPDISPATCH pDisp;
hr = ::CoCreateInstance(clsidWord, NULL, CLSCTX_LOCAL_SERVER, IID_IDispatch, (void**)&pDisp);
if( SUCCEEDED(hr) )
{
}
::OleUninitialize();
return 0;
}

是OleInitialize(0 ); 不是CoInitialize(0)

解决方案4:

progid和clsid正确吗?


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-06-04 请问怎样建立一个IE工具栏呢
  • 2017-06-05 请教高手:子线程如何向主线程中窗口发送消息
  • 2017-06-05 如何在dll中写接口的注释
  • 2017-06-05 DLL和程序共享数据问题
  • 2017-06-05 可以在Dll中用ADO操作数据库吗?
  • 2017-06-04 高手请指教----服务在停止的时候超时怎么处理?
  • 2017-06-05 关于Sleep的问题(初学者一问
  • 2017-06-04 ActiveX如何实现Serverpush
  • 2017-06-05 弱弱的问个多线程的问题
  • 2017-06-04 有谁知道ActiveXControlTestContainer是怎么做的?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 关于读注册表串口个数的一段代码,求逐行解释
    • 我这个问题简单,100分,关于控件里面的killFocus的问题
    • 奇怪的无法联接错误?
    • 请问ocx的文件如何在另外一台机器上注册??
    • delphi制作动态库vc来调用该怎么写接口怎么生成lib文件
    • ATL建的复合控件怎么不响应WM_INITDIALOG消息??
    • 两个不属于同一进程的线程访问共享资源,能不能用关键代码段
    • 调用SetWindowsHookEx得问题
    • CAsyncSocket派生类在线程中关闭出错
    • CDib类能在常规dll中用么?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有