2014-03-05 22 views
0

2之间,我有两个应用程序
第一个用C 第二用VB.NET数据交换应用

我想执行的第一个,并保持更新到第二

状态编程是有办法做到这一点?

我可以改变它们中的任何一个源代码

+0

你的两个程序之间传递数据或者是那里的数据存储就像一个数据库的地方,他们都可以读取?是一个程序调用另一个程序吗?他们是否都在同时运行,并且彼此“交谈”? – user2721815

+0

没有数据库,是第二个调用另一个,两个同时运行 –

+0

我已经在VB中使用一个接口完成了这个。我不知道你是否可以在C中做同样的事情。 – user2721815

回答

0

OK的地方,在VB中需要实现两个程序之间的接口,因此您可以在它们之间传递参数。

  • 记得导入 “系统” 和 “的System.Reflection”

在程序1(调用程序),我设置了:

Dim oType As System.Type 
Dim oAssembly As System.Reflection.Assembly 
Dim oObject As System.Object 

oAssembly = Reflection.Assembly.LoadFrom("C:\VB.NET\report3.exe") 
oType = oAssembly.GetType("report3.r1") ' this is [root_namespace.class name] 
oObject = Activator.CreateInstance(oType) 
oObject.SetParams("a", "b") 
oObject.show() 

这将导致report3.exe运行并将其作为值发送给“a”和“b”参数。

然后在程序2(report3.exe),我把它像这样:

Imports System.Reflection 

Public Class r1 

    Implements IPlugin 

    Public person As String = "" 
    Public address As String = "" 


    Private Sub r1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 

     Me.TopMost = True 'optional 

     Dim b1 As New Label() 
     With b1 
      .Location = New Point(10, 10) 
      .Width = 200 
      .Height = 20 
      .Parent = Me 
      .BackColor = Color.Blue 
      .ForeColor = Color.White 
      .Text = person 
     End With 

     call_addr() 
    End Sub 


    Public Sub SetParams(c As String, d As String) Implements IPlugin.SetParams 
     person = c 
     address = d 
    End Sub 

    Private Sub call_addr() 
     Dim b2 As New Label() 
     With b2 
      .Location = New Point(10, 50) 
      .Width = 200 
      .Height = 20 
      .Parent = Me 
      .BackColor = Color.Red 
      .text = address 
     End With 
    End Sub 

End Class 


Public Interface IPlugin 
    Sub SetParams(ByVal c As String, ByVal d As String) 
End Interface 
+0

好的,谢谢! –