• 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 > 熟悉IE编程和COM的请进,CreateInstance在普通程序中正常,在服务程序中不正常

熟悉IE编程和COM的请进,CreateInstance在普通程序中正常,在服务程序中不正常

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

佚名通过本文主要向大家介绍了 熟悉IE编程和COM的请进,CreateInstance在普通程序中正常,在服务程序中不正常等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 熟悉IE编程和COM的请进,CreateInstance在普通程序中正常,在服务程序中不正常
描述:

我的程序需要每隔一定时间枚举正在运行的IE实例,于是在WM_TIMER中执行如下代码:
CoInitialize(NULL);
SHDocVw::IShellWindowsPtr m_spSHWinds;
HRESULT ret=m_spSHWinds.CreateInstance(__uuidof(SHDocVw::ShellWindows));
if(m_spSHWinds==NULL)
{
if(debug.Open(L"c:\\debug.txt",CFile::modeCreate|CFile::modeWrite|CFile::modeNoTruncate))
{
CString errCode;
errCode.Format(L"CoCreateInstance failed (%X)\n",ret);
debug.SeekToEnd();
debug.WriteString(errCode);
debug.Close();
}
}
该代码运行正常,但是后来我把程序改为了Win32服务程序(NT Service),于是CreateInstance每次都失败,c:\\debug.txt中的信息如下:
CoCreateInstance failed (80040154)
CoCreateInstance failed (8007000E)
CoCreateInstance failed (8007000E)
CoCreateInstance failed (8007000E)
...
在winerror.h中查到  80040154 对应REGDB_E_CLASSNOTREG,意思是Class not registered,而8007000E对应E_OUTOFMEMORY,意思是Ran out of memory
这是什么原因呢?有办法解决吗?分不够再加


解决方案1:

IShellWindowsPtr需要一个shell。在服务里面Shell是没有的,因为服务自己没有桌面。你可以在用户启动时运行一个程序来和服务交互。

解决方案2:

读MSDN中的文章
Starting an Interactive Client Process in C++


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

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

  • 熟悉IE编程和COM的请进,CreateInstance在普通程序中正常,在服务程序中不正常

相关文章

  • 2017-06-04 VC60中如何实现浏览器中不良网址的添加跟网页源代码的获取啊
  • 2017-06-05 获取IShockwaveFlash接口,QueryInterface该输入什么参数?
  • 2017-06-04 求IE工具条插件定制开发
  • 2017-06-04 一个用COM构建软件框架的问题
  • 2017-06-04 vb调用delphi产生的comobject的奇怪问题
  • 2017-06-04 一个奇怪的问题:这个COM对象是位于内核空间中的吗?应该如何访问它?
  • 2017-06-05 怎样通过CRecordset得到excel文件的所有表名
  • 2017-06-04 GridCtrl的问题?
  • 2017-06-04 ATL开发COM组件问题?有经验的看下,谢了
  • 2017-06-04 如何枚举实现了特定接口的组件

文章分类

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

最近更新的内容

    • 请问下有没有c++操作pdf的类库?
    • 捕获浏览器事件直接造成浏览器阻塞,大家看看咋了?
    • 高分(100)请教:对VNC熟悉的过来看看哦
    • ocx控件,使用DirectDraw出现的异常情况,在线等。。。
    • 请问各位大侠:在复合文件中怎样设置,才能使流的内容从流的开头写起
    • 问一个关于“CriticalSetion”等线程数据交换的问题
    • 请问如何在两个进程中共享一个数组???
    • C++ATL写的BHO插件,加载后IE浏览器老是提示页面已恢复不停的跳转
    • win32sdk中如何与flash通信?下面的源程序,可是编译出错,大牛请帮助
    • 关于数据库表的问题

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

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