2009-11-09 80 views
1

我正在使用flash 10 activex控件將Flash影片加載到我的WinForm中。不幸的是,它只需要一條路。我想要做的是從我可以從EmbeddedResource得到的流中加載swf,這樣我就可以將swf嵌入到我的exe中,這樣A)我不必擔心路徑和B)我沒有我的swf非常暴露 - 對於使用和部署都更簡單。如何在不首先寫入文件的情況下從C#EmbeddedResource加載SWF?

我知道使用f-in-box但我不想添加另一個依賴項到我的項目。有沒有辦法將swf加載到底層的activex控件中而不必使用路徑?

我使用C#和.net 3.5sp1。

回答

2

是那條路徑總是文件路徑?或者它可以是一個URL?設置一個使用HttpListener(或類似的)的臨時本地主機網絡服務器應該非常簡單,它可以回傳文件以響應http請求。

另一種可能性是命名管道;我想知道你是否可以說服控件打開一個命名管道,好像它是一個文件? (畢竟他們有一個邏輯文件路徑)。但我幾乎沒有觸及這些 - 所以我不能說100%是否會起作用。

+0

感謝您的輸入。我相信它應該能夠接受一個URL,但是設置一個localhost webserver非常適合客戶端?我相信命名管道只是將信息從一個進程傳遞到另一個進程? Flash的activex控件只需要一個字符串。 – McAden 2009-11-16 17:09:38

+0

您不必設置完整的網絡服務器,只需一個tcp偵聽器,它將使用簡單的預定義標頭和swf內容進行響應。但是你需要一個免費的TCP端口和一個後臺工作者。我猜這有些麻煩,但這不是火箭科學。 – 2009-11-18 00:51:14

+0

不知道這是我們要走的路,但這是我見過的最接近的解決方案。謝謝。 – McAden 2009-11-19 01:08:37

0

我不知道flash 10是否支持res protocol從資源加載網頁內容。但我認爲Windows Forms和WPF中的Web瀏覽器控件支持它。

要創建本地資源,您需要本地資源編輯器。 Visual C++有一個。您可以在Windows SDK中使用RC.exe將其編譯爲res文件,然後再鏈接到C#程序中。

更新: 看起來像IE的Flash插件不支持res協議。將.swf文件嵌入到資源文件中,並使用電影參數加載它不起作用。嘗試將Flash文件嵌入到Web存檔文件(.mht)中,然後將.mht文件添加到資源中。

+0

我試過水庫,無法讓它工作。我在網絡上也沒有看到任何例子。不過謝謝。 – McAden 2009-11-16 17:10:44

相關問題