• 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 > 一个进程外的组件不能被使用啊,郁闷

一个进程外的组件不能被使用啊,郁闷

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

佚名通过本文主要向大家介绍了warframe进程无法使用,正由另一进程使用,文件正由另一进程使用,星际战甲进程无法使用,进程无法使用等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 一个进程外的组件不能被使用啊,郁闷
描述:

自己抛开了ATL写了一个进程外的组件但是没有成功,不知道为什么?
自定义的接口:
#include <windows.h>
class IHelloInterface : public IUnknown
{
public:
IHelloInterface(){}
~IHelloInterface(){}
STDMETHOD (Hello)() PURE;
};
对象类:
CHello::CHello ()
{
    m_RefCount = 1 ;
}
CHello::~CHello()
{
}
STDMETHODIMP CHello::QueryInterface(REFIID riid, LPVOID *ppv)
{
    if(IID_IUnknown == riid)
{
*ppv=static_cast<IUnknown*>(this);
AddRef();
return S_OK;
}
else if(__uuidof(IHelloInterface) == riid)
{
*ppv=static_cast<IHelloInterface*>(this);
AddRef();
return S_OK;
}
else
return E_NOINTERFACE;
        
}
STDMETHODIMP_(ULONG) CHello::AddRef(void)
{
    return ++m_RefCount;
}
STDMETHODIMP_(ULONG) CHello::Release(void)
{
m_RefCount -- ;
    if (m_RefCount == 0)
{
        delete this;
return 0 ;
}
    return m_RefCount ;
}
STDMETHODIMP CHello::Hello()
{
MessageBox(NULL,"Hello","Test",MB_OK);
return NOERROR ;
}
类厂的实现:
CClassFactory::CClassFactory (void)
{
    m_RefCount = 1 ;
}
CClassFactory::~CClassFactory(void)
{
}
STDMETHODIMP CClassFactory::QueryInterface(REFIID riid, LPVOID *ppv)
{
    if(IsEqualIID(riid, IID_IUnknown))
{
        *ppv = static_cast<IUnknown*>(this);
AddRef( ) ;
return NOERROR;
}
else if(IsEqualIID(riid, IID_IClassFactory))
{
*ppv = static_cast<IClassFactory*>(this);
AddRef( ) ;
return NOERROR;
}
else
{
     *ppv = NULL ;
     return ResultFromScode(E_NOINTERFACE);
}
        
}
STDMETHODIMP_(ULONG) CClassFactory::AddRef(void)
{
    return ++m_RefCount;
}
STDMETHODIMP_(ULONG) CClassFactory::Release(void)
{
m_RefCount -- ;
    if (m_RefCount == 0)
{
        delete this;
return 0 ;
}
    return m_RefCount ;
}
STDMETHODIMP CClassFactory::CreateInstance(LPUNKNOWN pUnkOuter, 
REFIID riid, LPVOID* ppvObj)
{
    
if (pUnkOuter != NULL)
{
*ppvObj = NULL ;
return ResultFromScode (CLASS_E_NOAGGREGATION) ;
}
         CHello* pEliza = new CHello( ) ;
if(NULL == pEliza)
{
MessageBox(NULL,"Memory not enough","Error",MB_OK);
return S_FALSE;
}
    else if (pEliza->QueryInterface (riid, ppvObj) != NOERROR)
{
pEliza->Release() ;
return E_NOINTERFACE ;
}
else
{
return NOERROR ;
}
}
STDMETHODIMP CClassFactory::LockServer(BOOL bLock)
{
if (bLock == TRUE)
      LockCount ++ ;//全局变量
else
{
LockCount -- ;
if (LockCount == 0)
{
DestroyWindow (hMainWnd) ;
}
}
return NOERROR ;
}
界面是一个Win32的空窗体:
......
if (strstr (lpCmdLine, "-Embedding"))
{
LPCLASSFACTORY pCF = new CClassFactory ( ) ;
CoRegisterClassObject(__uuidof(CEliza), pCF, 
CLSCTX_LOCAL_SERVER,
REGCLS_MULTIPLEUSE,
&dwRegister) ;
}
........
其余的没有列出,帮帮忙看看哪里错了?用.reg文件进行的注册,注册后的键值如下所示:
HKEY_CLASSES_ROOT\Hello = First Local Server
HKEY_CLASSES_ROOT\Hello\CLSID = {7D519041-1645-4a8c-BDE0-0F4A44FC38C4}
HKEY_CLASSES_ROOT\Hello\CLSID\LocalServer32 =D:\localserver.exe


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

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

  • 一个进程外的组件不能被使用啊,郁闷

相关文章

  • 2017-06-05 ATL模板的ActiveX控件,无窗口句柄无法settimer或者sendmessage,如何建立隐藏窗口完成这些操作?
  • 2017-06-05 MFC应用程序能BuildF7但是不能ExecuteCtrl+F5?可能是什么原因?
  • 2017-06-04 用VC设置Excel单元格颜色
  • 2017-06-05 谁能给我一个关于线程的例程???拜托!!!
  • 2017-06-04 不是说ATL实现的ACTIVEX控件很小么
  • 2017-06-05 关于用MFC写的DLL的几个问题
  • 2017-06-04 com问题,望高手指点
  • 2017-06-04 为什么我的组件debug下可生成,release下就不成呢?
  • 2017-06-05 动态库为什么注册不了?
  • 2017-06-04 难多多加分activex控件的属性往textareavalue上赋值

文章分类

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

最近更新的内容

    • DDX_TextpDX,IDC_EDIT1,intm_pSet->m_name,5;
    • 怎么在ActiveX上增加普通控件?
    • ActiveX控件交互问题
    • 在VC6中新建ActiveX的时候可以选择建立几个控件,在VS2008中怎么实现呢?
    • 动态调用dll的问题。
    • editcontrol输入中文乱码问题
    • ActiveX控件属性的持久性是怎样得以保存的?保存在了哪里?
    • ATL中如何实现CList类
    • 各位COM高手,可以到这里来看看小妹的问题哟
    • 调用dos程序的一个问题

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

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