2013-02-08 71 views
1

是否可以在另一個程序(不是VB.Net)中調用的VB.Net exe中創建子例程?我知道你可以用一個程序集(dll)來做到這一點,但是你可以在exe中做到這一點嗎?在可從另一個程序調用的VB.Net exe中創建一個子例程

[編輯] VB.Net exe在調用時已經運行。

[EDIT2] VB.Net程序,這些編譯成爲BA_SyncNet.exe - Form1.vb的

Public Class Form1 
    ... 
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     ... 
    End Sub 
End Class 

VB.Net程序 - Helloworld.vb

Namespace MapInfoBA.MiProBA.SamplesBA 
    Public Class HelloWorld 

     Public Shared Sub SayHello(ByVal s As String) 
      System.Windows.Forms.MessageBox.Show("Hello, " + s) 
     End Sub 

    End Class 
End Namespace 

調用程序ba.mbx用途:

Declare Method SayHello Class "MapInfoBA.MiProBA.SamplesBA.HelloWorld" Lib "BA_SyncNet.exe" (ByVal strName As String) 

Sub Main() 
    Call SayHello("World") 
End Sub 

親切的問候

+0

我相信.net exe將不得不被設置爲接受命令行參數。 – Jack 2013-02-08 22:13:28

+0

Hi @Jack,也忘了提及這個VB.Net exe已經在運行。 – Hank 2013-02-08 22:26:24

回答

2

I am aware that you can do this with an assembly

An.exe是一種程序集。所以,是的。

+0

對不起@Joel Coehoom,當我說彙編我的意思是DLL。這有什麼區別嗎? – Hank 2013-02-08 22:23:22

+0

@Hank它不會改變任何東西。一個dll也是一種程序集。基本上,你可以通過COM或其他方式使用DLL來做任何事情,你可以這樣做,因爲它是一個程序集。一個.Net EXE文件恰好也是一個程序集,只有幾個特殊的版本,以便運行時知道雙擊它時應該怎麼做。 – 2013-02-08 22:27:19

+0

Coehoom,謝謝!是否就像在我的應用程序中創建一個新類一樣簡單,如果你看看我的第二次編輯,我只是​​試過這個沒有運氣。有什麼建議? – Hank 2013-02-08 23:25:13

0

使用MapBasic程序創建一個文件(比方說,DoThisVBNet.txt)。

然後你的vb.net程序不時檢查文件。 vb.net程序將基於DoThisVBNet.txt文件完成一項任務(在你的情況下,調用一個子例程)。

但是, 訪問該文件時可能會出現問題,因爲兩個程序正在使用它, 來解決此問題,請使用Registry而不是File。

相關問題