在C# WinForms应用程序中显示Flash内容

40
什么是在C# WinForms应用程序中显示Flash内容的最佳方法? 我想创建一个用户控件(类似于当前的PictureBox),能够显示图像和Flash内容。
最好能够从某种流中加载flash内容,而不是从磁盘文件加载。

1
我赞同Sven的回答,但是有一点需要注意:使用WebBrowser组件非常容易管理,实际上,它就是为这种用途(嵌入应用程序UI)而设计的。你可以将浏览器控件指向一个URL,当然,你也可以精确地指定它包含的内容,响应事件等等。甚至还有一个内嵌资源协议/方案(res://),你可以用它来引用内嵌资源。但是如果Flash组件本身很干净,那当然是更好的选择 :) - user2189331
2个回答

34

虽然我自己没有在Windows窗体应用程序中使用过Flash对象,但我知道这是可能的。

在Visual Studio中的工具箱上,选择添加一个新组件。

然后在出现的新窗口中,选择"COM组件"选项卡以获取列表,在其中可以找到"Shockwave Flash Object"

一旦添加到工具箱中,只需像使用Visual Studio中的任何其他"标准"控件一样使用该控件即可。

有三个简单的命令可用于与该控件交互:

  • AxShockwaveFlash1.Stop()
  • AxShockwaveFlash1.Movie = FilePath & "\FileName.swf"
  • AxShockwaveFlash1.Play()

我认为这些都很容易理解。

如果能够从某种流中加载Flash内容而不是从磁盘文件中加载将会很好。

我刚刚看到你也正在寻找从流中加载内容的方法,因为我不确定使用Shockwave Flash对象是否可能实现这一点,所以我将给你另一个选项(实际上有两个)。

第一个选项是我建议你仅在必要时使用的选项,因为它使用了完整的"WebBrowser组件"(也可作为额外的工具箱项提供),这就像用火箭筒打苍蝇。

当然它可以工作,因为该控件将充当一个真正的浏览器窗口(实际上是Internet Explorer浏览器),但它并不是用于你所需用途的。

第二个选项是我刚刚在寻找在Windows窗体中播放Flash内容的更多信息时发现的。 F-IN-BOX是一种商业解决方案,也可以播放来自给定网站URL的内容。(提供的链接将引导您前往必须使用的.NET代码)。


1
注意:在VS 2013中,当您在工具箱上右键单击时,会出现一个名为“选择项目...”的选项。 - Alexei Levenkov

8
Sven,你得出了和我一样的结论:我找到了Shockwave Flash Object,虽然路径略有不同,但是却无法从除了磁盘文件/URL以外的其他地方加载文件。尽管F-IN-BOX只是Shockwave Flash Object的包装器,但它似乎提供了更多的功能,这可能会对我有所帮助!

用重武器打苍蝇可能很有趣,但嵌入式Web浏览器并不是我想要的路径。 :)

Adobe网站上有一个链接,讨论“在C# Windows应用程序中嵌入和与Macromedia Flash Player通信”,但他们似乎已经删除了 :(


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接