2013-07-31 70 views
0

我通常不會在.NET框架中編程,但是我需要使用它來創建一個簡單的exe應用程序來記錄某些測量設備的數據。我希望這個應用程序有一個自動化接口和幾個方法。在使用Delphi/Pascal之前,我已經完成了它,它非常簡單,我可以在Visual Studio中創建一個類庫,它可以註冊自己和方法,並且可以很容易地與之交互,但是添加一個ComClass到Windows窗體應用程序並不會工作,任何人都可以指向正確的方向嗎?使用Visual Basic/Visual Studio 12的Windows窗體EXE中的COM

+0

你是什麼意思的「不工作」?爲什麼你不想使用類庫? – PatFromCanada

+0

我需要應用程序連續運行,通過GUI進行用戶交互。然後我想能夠調用一些方法並返回由另一個應用程序驅動的值。 – user1808759

+0

我想在這裏詳細添加一個COM組件:http://msdn.microsoft.com/en-us/library/x66s8zcd.aspx到Windows窗體應用程序來構建一個.exe,而不是一個類庫 – user1808759

回答

0

這開始作爲一個評論只是不斷成長,希望我不是偏離了軌道......

只能註冊一個DLL。所以簡短的回答是將一個類庫添加到您的項目中,並將com類放在那裏。這可以讓你分享這個類的功能,但不是那個類的同一個實例。

我認爲你的問題是你正試圖建立Interprocess Communications。我的直接建議是,至少在一開始就不這樣做。

首先,您可以將您的com應用程序界面與.net類庫一起記錄數據。然後,您可以使用另一個.net可執行文件來顯示日誌,並定期更新。現在你在圍欄的兩邊都有.net代碼,並且可以開始調查讓他們相互交談的方法。

困難的部分是調用方法並返回值。如果您真的需要一個響應式系統,您可以調查命名管道進程間通信,或使用兩個系統之間回調的WCF服務。問題是,在任何情況下,你都被類庫所託管,而不是由.net託管,所以你的功能有限(沒有配置文件等)。如果你能忍受一段時間延遲,我建議你簡單地開始寫消息到本地數據存儲,然後每隔30秒左右從每個客戶端進行輪詢。例如,應用程序會創建一條消息,說「給我測量A」,然後每秒開始輪詢。該DLL將有一個計時器,並在30秒內讀取該消息,並寫入自己的消息與測量,該EXE將讀取,然後顯示。一旦啓動並運行該系統,您可以決定是否需要解決進程間通信,這實際上只是一個不同的界面。

相關問題