VB6进程间互操作
废话少说,直接上代码。 1、VB ActiveEXE 工程。 Private Sub Form_Unload(Cancel As Integer) 4、Module1 Code Option Explicit Public oClass1 As Class1 Sub Main() Set oClass1 = New Class1 Form1.Show End Sub 5、Class1 Code Option Explicit Private mPatientID As String Private Type GUIDs Data1 As Long Data2 As Integer Data3 As Integer Data4(0 To 7) As Byte End Type 'Declares needed to register object in the ROT (Run Object Table) Private Const ACTIVEOBJECT_STRONG = 0 Private Const ACTIVEOBJECT_WEAK = 1 Private Declare Function CLSIDFromProgID Lib "ole32.dll" (ByVal ProgID As Long,rclsid As GUIDs) As Long Private Declare Function CoDisconnectObject Lib "ole32.dll" (ByVal pUnk As IUnknown,pvReserved As Long) As Long Private Declare Function RegisterActiveObject Lib "oleaut32.dll" (ByVal pUnk As IUnknown,rclsid As GUIDs,ByVal dwFlags As Long,pdwRegister As Long) As Long Private Declare Function RevokeActiveObject Lib "oleaut32.dll" (ByVal dwRegister As Long,ByVal pvReserved As Long) As Long Private OLEInstance As Long Public Property Let PatientID(ByVal Value As String) mPatientID = Value End Property Public Property Get PatientID() As String PatientID = mPatientID End Property Public Sub AddToROT() Dim mGuid As GUIDs Dim lp As Long 'The magic happens here 'This code is responsible for creating the entry in the ROT 'Make sure to insert the correct qualified object (class) that 'you want in the ROT. OLEInstance = 0 lp = CLSIDFromProgID(StrPtr("Project1.Class1"),mGuid) If lp = 0 Then lp = RegisterActiveObject(Me,mGuid,ACTIVEOBJECT_WEAK,OLEInstance) End If End Sub Public Sub RemoveFromROT() 'Once we are done with the main program,lets clean up the rot 'by removing the entry for our ActiveX Server/DLL If OLEInstance <> 0 Then RevokeActiveObject OLEInstance,0 End If CoDisconnectObject Me,0 End Sub Private Sub Class_Initialize() AddToROT mPatientID = "123456" End Sub Private Sub Class_Terminate() RemoveFromROT End Sub 6、编译,生成EXE,运行。 Private Sub Command1_Click() Dim oTestObject As Object Set oTestObject = GetObject(,"Project1.Class1") If oTestObject Is Nothing Then MsgBox "Error" Else MsgBox oTestObject.patientid End If End Sub (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- javax.persistence.EntityManager.getCriteriaBuilder()Lja
- 【OCP-12c】CUUG最新考试原题整理及答案(071-9)
- FP-Growth算法之频繁项集的挖掘(python)
- perl的输出:print、say和printf
- 死亡历险,翻开新的一篇之Delphi 连接 JAVA WebService,并
- perl6 – 如何使Perl 6语法产生多个匹配(如:ex和:ov)?
- Delphi XE4 主窗体隐藏之后任务栏没有图标显示。
- 113. Path Sum II - Medium
- Lua 与C/C++ 交互系列:Userdata知识点翻译
- 【BBC micro:bit基础教程】01-如何用按键控制一个LED