2009-11-09 47 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

相关问题