如何在不首先写入文件的情况下从C#EmbeddedResource加载SWF?

时间:2009-11-09 20:03:34

标签: c# activex axshockwaveflash

我正在使用flash 10 activex控件将flash影片加载到我的WinForm中。不幸的是,它只需要一条路。我正在尝试做的是从我可以从EmbeddedResource获取的流加载swf所以我可以将swf嵌入到我的exe中,以便A)我不必担心路径和B)我没有我的swf非常暴露 - 使用和部署都比较简单。

我知道使用f-in-box,但我不想在项目中添加另一个依赖项。有没有办法将swf加载到底层的activex控件而不必使用路径?

我正在使用C#和.Net 3.5sp1。

2 个答案:

答案 0 :(得分:2)

该路径始终是文件路径吗?或者它可以是一个URL?使用HttpListener(或类似)设置临时localhost Web服务器应该非常简单,它会回送文件以响应http请求。

另一种可能性是命名管道;我想知道你是否可以说服控件打开命名管道,好像它是一个文件? (毕竟他们有一个逻辑文件路径)。我几乎没有触及这些 - 所以我不能100%说它是否会起作用。

答案 1 :(得分:0)

我不知道flash 10是否支持res protocol从资源加载Web内容。但我认为Windows Forms和WPF中的Web浏览器控件支持它。

要创建本机资源,您需要一个本机资源编辑器。 Visual C ++有一个。您可以在Windows SDK中使用RC.exe将其编译为res文件,然后再在C#程序中进行链接。

更新: 看起来IE的Flash插件不支持res协议。将.swf文件嵌入资源文件并使用movie参数加载它将无法正常工作。尝试将Flash文件嵌入Web存档文件(.mht)并将.mht文件添加到您的资源中。