首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

VB进程间互访 - 代码(纪念VB),该如何处理

2012-02-01 
VB进程间互访 - 代码(纪念VB)1、VB ActiveEXE 工程。2、Form1 + Module1 + Class13、Form1 CodeVB codePrivate

VB进程间互访 - 代码(纪念VB)
1、VB ActiveEXE 工程。
2、Form1 + Module1 + Class1
3、Form1 Code

VB code
Private Sub Form_Unload(Cancel As Integer)    Set oClass1 = NothingEnd Sub

4、Module1 Code
VB code
Option ExplicitPublic oClass1 As Class1Sub Main()    Set oClass1 = New Class1     Form1.ShowEnd Sub

5、Class1 Code
VB code
Option ExplicitPrivate mPatientID As StringPrivate Type GUIDs    Data1 As Long    Data2 As Integer    Data3 As Integer    Data4(0 To 7) As ByteEnd Type'Declares needed to register object in the ROT (Run Object Table)Private Const ACTIVEOBJECT_STRONG = 0Private Const ACTIVEOBJECT_WEAK = 1Private Declare Function CLSIDFromProgID Lib "ole32.dll" (ByVal ProgID As Long, rclsid As GUIDs) As LongPrivate Declare Function CoDisconnectObject Lib "ole32.dll" (ByVal pUnk As IUnknown, pvReserved As Long) As LongPrivate Declare Function RegisterActiveObject Lib "oleaut32.dll" (ByVal pUnk As IUnknown, rclsid As GUIDs, ByVal dwFlags As Long, pdwRegister As Long) As LongPrivate Declare Function RevokeActiveObject Lib "oleaut32.dll" (ByVal dwRegister As Long, ByVal pvReserved As Long) As LongPrivate OLEInstance As LongPublic Property Let PatientID(ByVal Value As String)    mPatientID = ValueEnd PropertyPublic Property Get PatientID() As String    PatientID = mPatientIDEnd PropertyPublic 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 IfEnd SubPublic 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, 0End SubPrivate Sub Class_Initialize()    AddToROT    mPatientID = "123456"End SubPrivate Sub Class_Terminate()    RemoveFromROTEnd Sub

6、编译,生成EXE,运行。
7、Test Code
VB code
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 IfEnd Sub


唯一的不好是,写代码时,点不出相应的属性。

[解决办法]
那贴404了,看看未及贴里,有没有,再生成下贴子
[解决办法]
又来一个,楼主是财主啊。
[解决办法]
有分不接是白痴……
学习%……
[解决办法]

[解决办法]
有分不接是白痴……
学习%……
[解决办法]
学习中学习中
[解决办法]
和用CreateObject,有什么不同吗?
------解决方案--------------------


看看
[解决办法]
mark,studying...
[解决办法]
纪念纪念
[解决办法]
楼主有钱啊

热点排行