描述:
服务代码:
// Events.idl : IDL source for Events.dll
//
// This file will be processed by the MIDL tool to
// produce the type library (Events.tlb) and marshalling code.
import "oaidl.idl";
import "ocidl.idl";
[
object,
uuid(8AED0487-A297-41A8-9CA6-8CA2CE305B71),
helpstring("ISystemEvents Interface"),
pointer_default(unique)
]
interface ISystemEvents : IUnknown
{
[helpstring("method ProcessCreated")] HRESULT ProcessCreated(BSTR szProcessName);
[helpstring("method ProcessTerminated")] HRESULT ProcessTerminated(BSTR szProcessName);
};
[
uuid(B7B4D013-B9EB-410F-8324-80B526399829),
version(1.0),
helpstring("Events 1.0 Type Library")
]
library EVENTSLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
[
uuid(9AD5E268-9359-4DF7-A0FA-35F746106183),
helpstring("SystemEvents Class")
]
coclass SystemEvents
{
[default] interface ISystemEvents;
};
};
// SystemEvents.h : Declaration of the CSystemEvents
#ifndef __SYSTEMEVENTS_H_
#define __SYSTEMEVENTS_H_
#include "resource.h" // main symbols
/////////////////////////////////////////////////////////////////////////////
// CSystemEvents
class ATL_NO_VTABLE CSystemEvents :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CSystemEvents, &CLSID_SystemEvents>,
public ISystemEvents
{
public:
CSystemEvents()
{
}
DECLARE_REGISTRY_RESOURCEID(IDR_SYSTEMEVENTS)
DECLARE_NOT_AGGREGATABLE(CSystemEvents)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CSystemEvents)
COM_INTERFACE_ENTRY(ISystemEvents)
END_COM_MAP()
// ISystemEvents
public:
STDMETHOD(ProcessTerminated)(BSTR szProcessName);
STDMETHOD(ProcessCreated)(BSTR szProcessName);
};
#endif //__SYSTEMEVENTS_H_
客户:
m_pEvent = NULL;
HRESULT hr = CoCreateInstance(CLSID_SystemEvents,NULL,CLSCTX_INPROC_SERVER,
IID_ISystemEvents,reinterpret_cast<void**>(&m_pEvent));
运行时:
hr = -2147467262
用error look up 提示“不支持改接口!”
咋就不对劲呢!
解决方案1:
楼主的Events.dll注册过了?