Const IID_Event_NetEvent = "{79823C92-F3CE-444A-946E-6F3872C56EAC}"'事件IID
Const IID_NetEvent = "{79823C92-F3CE-444A-946E-6F3872C56EAB}"'接口IID
Const CLSID_NetEvent = "{562625B2-58C1-43B8-A7B8-FD801CE8F0BB}"'組件CLSID
Const ProgID_NetEvent = "NetEvent"'組件ProID
DECLARE_EVENT_MAP(TestEvent ,IID_Event_NetEvent)'事件接口聲明
Function myadd(ByVal v As VARIANT Ptr) As VARIANT
'COM組件方法(參數必須為variant ptr,實為variant()數組,返回值必須為variant類型)
dim vv as VARIANT
Raise_TestEvent.Run("xxx" ,123) '調用事件接口
MsgBox cobject("xxxx").ToString
Return vv
End Function
BEGIN_COM_MAP(NetEvent ,IID_NetEvent) '組件聲明
BEGIN_EVENT_MAP(TestEvent)'事件接口入口
BEGIN_DISPATCH_MAP(NetEvent)'方法ID映射表聲明
DISP_FUNCTION_ID(1 ,myadd)'方法ID映射聲明
DECLARE_DISPATCH_MAP(NetEvent)'方法調用表聲明
DISP_sub(1 ,myadd) END_DISPATCH_MAP() '調用方法
OBJECT_ENTRY(NetEvent ,ProgID_NetEvent ,CLSID_NetEvent)'Activex DLL入口函數
'OBJECT_ENTRY2(NetEvent ,ProgID_NetEvent ,CLSID_NetEvent)'Activex Exe入口函數
'DLL入口函數和Exe入口函數僅能選一種
'ROT(NetEvent ,CLSID_NetEvent)'非Activex程序com活動對象注冊,Activex Exe已自帶該宏無需重復使用
vb6使用:
Private Sub Command1_Click()
Dim o As Object
Set o = CreateObject("NetEvent")
o.myadd
End Sub
Private Sub Command2_Click() 'Activex Exe或使用ROT非Activex工程使用
Dim o As Object
Set o = GetObject(, "NetEvent")
o.myadd
End Sub