2010-11-26 73 views
1

我正試圖整合我的應用程序的依賴關係。在這種情況下,我有一個控制檯應用程序(MAD - MPEG音頻解碼器),我想將其嵌入到我的應用程序中。我已經將它作爲資源添加了,但是如何將它作爲文件引用?這是有問題的代碼(VB.NET):在Windows窗體中嵌入控制檯應用程序並用作過程?

With MAD.StartInfo 
    .FileName = My.Resources.madplay 
    .Arguments = "" 
    .UseShellExecute = False 
    .RedirectStandardInput = True 
    .RedirectStandardError = True 
    .RedirectStandardOutput = True 
End With 
MAD.Start() 
MAD.BeginOutputReadLine() 

顯然這是行不通的。我需要引用My.Resources.madplay作爲FileName的文件。有沒有辦法做到這一點,或者我應該將資源複製到光盤並在完成後將其刪除?

+0

是的,你需要把它寫出來作爲一個文件,然後才能執行它。 – 2010-11-26 23:57:21

+0

我最終使用WriteAllBytes()將它寫出到文件中,然後將其刪除。謝謝! – Steven 2010-11-27 00:50:01

回答

0

最好的做法是將用於執行控制檯應用程序的代碼移到類庫(DLL文件)中,然後將該DLL導入到您的WinForms項目和控制檯應用程序項目中。

這樣做仍然可以通過將所有音頻解碼邏輯放入由兩個應用程序使用的單個庫中來實現整合代碼的目標,還允許您分離顯示功能(但最小限度可能在於控制檯應用程序)確實在兩個應用程序之間有所不同。

否則,您將無法執行作爲嵌入資源存在的文件,而無需將其解壓縮到文件中。我想你可以把它做成一個臨時目錄,但是你將得到一個不太重要的任務,即獲取窗口句柄並嘗試將其託管在Windows窗體中。你會發現這樣做的絕大多數方法都是爲了避免黑客入侵,而且我發現很難相信當用戶使用另外設計良好的Windows窗體時,用戶會欣賞一個控制檯應用程序。
而且,如果您要做的只是爲兩個應用程序中的音頻解碼提供通用功能,請致電調用從WinForms應用程序場景中的控制檯應用程序的代碼中將其放入動態鏈接庫是迄今爲止您的最佳解決方案。

0

我最終使用WriteAllBytes()將它寫出到一個文件,然後刪除它。

相關問題