winform调用webBrowser加载本地flash问题

kucao 2015-11-23 09:02:59
想在一个winform窗体webBrowser播放一个本地分swf文件,现在有两个问题:
1、如何播放?
2、如何才能将swf打包到生成的exe文件里,就是只想生成一个exe, swf在这个exe包里面,不在外面。

下面是我简单写一段代码,无法播放

string flashSrc = "02.swf";

StringBuilder sb = new StringBuilder();
sb.Append("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">");
sb.Append("<HTML><HEAD></HEAD><BODY style=\"margin:0; padding:0;\">");
sb.Append("<embed style=\"POSITION:absolute;\" align=\"center\" src=\"" + flashSrc + "\" width=\"100%\" height=\"100% \" type=\"application/x-shockwave-flash\" wmode=\"transparent\" quality=\"high\"></embed>");
sb.Append("</BODY></HTML>");

webBrowser1.DocumentText = sb.ToString();

请高手指点,非常感谢, 因为一般都是做web程序,很少做winform程序,请尽量说的详细点,非常感谢
...全文
293 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
knf 2015-11-25
  • 打赏
  • 举报
回复
百度“无临时文件播放内存中的Flash(*.swf)文件“ 有VC实现的例子,没看到C#的
kucao 2015-11-25
  • 打赏
  • 举报
回复
谢谢各位的回复,其实我是想我们做的flash游戏需要配合加密锁来使用,而加密锁厂商没有直接适合flash的驱动,所以不得已我才想在外面包装上一层winform程序,winform验证加密锁,通过后播放flash ,所以任何把swf暴露在外面的情况都不是我想要的。 swf必须得打包到exe里面才能防止别人随便拷贝去没有加密锁的情况下来使用。 现在问题是,我不知道怎么调用资源里的swf并播放,请有经验的大侠们帮忙指点一下,非常感谢!
kucao 2015-11-25
  • 打赏
  • 举报
回复
引用 9 楼 BitCoffee 的回复:
[quote=引用 4 楼 kucao 的回复:] [quote=引用 2 楼 BitCoffee 的回复:] 1.可以使用com控件播放flash http://www.cnblogs.com/qycblog/archive/2010/08/08/1795253.html 2.将swf文件包含在项目中,然后修改其生成属性为嵌入资源,文件路径用命名空间.Properties.Resources.文件名.
非常感谢你的回答,我按照你说的这个方法调用资源里的swf文件不能播放啊? 我的swf文件叫: 02.swf, 添加到资源里的名字叫: _02 我用下面方法调用 flashBox.Movie = Properties.Resources._02 提示无法将 byte[] 转换成string 写成下面这个又无法播放 flashBox.Movie = Properties.Resources._02.ToString(); 请问该怎么写啊? 非常感谢[/quote] 不要文件名ToString()[/quote] flashBox.Movie = Properties.Resources._02 提示无法将 byte[] 转换成string
BitCoffee 2015-11-25
  • 打赏
  • 举报
回复
引用 4 楼 kucao 的回复:
[quote=引用 2 楼 BitCoffee 的回复:] 1.可以使用com控件播放flash http://www.cnblogs.com/qycblog/archive/2010/08/08/1795253.html 2.将swf文件包含在项目中,然后修改其生成属性为嵌入资源,文件路径用命名空间.Properties.Resources.文件名.
非常感谢你的回答,我按照你说的这个方法调用资源里的swf文件不能播放啊? 我的swf文件叫: 02.swf, 添加到资源里的名字叫: _02 我用下面方法调用 flashBox.Movie = Properties.Resources._02 提示无法将 byte[] 转换成string 写成下面这个又无法播放 flashBox.Movie = Properties.Resources._02.ToString(); 请问该怎么写啊? 非常感谢[/quote] 不要文件名ToString()
  • 打赏
  • 举报
回复
引用 楼主 kucao 的回复:
2、如何才能将swf打包到生成的exe文件里,就是只想生成一个exe, swf在这个exe包里面,不在外面。
exe第一次运行时,你也需要把它保存到外边。
  • 打赏
  • 举报
回复
是这样的!先在本地把 html 调通,就知道如何访问本地绝对地址的资源。 在应用程序中,你可以使用类似这样的代码
var f = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "media", "KY.swf");
来获取文件的本地路径。
crystal_lz 2015-11-25
  • 打赏
  • 举报
回复
引用 5 楼 kucao 的回复:
[quote=引用 3 楼 crystal_lz 的回复:] 如果你只是想完成目的 而不是 想知道程序怎么写的话 百度一大堆 swf 转换exe的
你好,我需要通过 winform 来访问swf, 因为还需要有其他程序配合, 非常感谢你的回答[/quote] 既然这样的话 那你先就不要研究 如何用webbrowser来加载swf了 你先做一个静态的html里面能用ie加载swf 那么 所有问题就搞定了 说白了 还是静态页面的问题 路径能用绝对路径就绝对路径吧 没试过在webbrowser里面用相对路径是不是 当前程序的相对路径 或者实在不行 上控件吧
BitCoffee 2015-11-24
  • 打赏
  • 举报
回复
1.可以使用com控件播放flash http://www.cnblogs.com/qycblog/archive/2010/08/08/1795253.html 2.将swf文件包含在项目中,然后修改其生成属性为嵌入资源,文件路径用命名空间.Properties.Resources.文件名.
kucao 2015-11-24
  • 打赏
  • 举报
回复
引用 2 楼 BitCoffee 的回复:
1.可以使用com控件播放flash http://www.cnblogs.com/qycblog/archive/2010/08/08/1795253.html 2.将swf文件包含在项目中,然后修改其生成属性为嵌入资源,文件路径用命名空间.Properties.Resources.文件名.
非常感谢你的回答,我按照你说的这个方法调用资源里的swf文件不能播放啊? 我的swf文件叫: 02.swf, 添加到资源里的名字叫: _02 我用下面方法调用 flashBox.Movie = Properties.Resources._02 提示无法将 byte[] 转换成string 写成下面这个又无法播放 flashBox.Movie = Properties.Resources._02.ToString(); 请问该怎么写啊? 非常感谢
kucao 2015-11-24
  • 打赏
  • 举报
回复
引用 3 楼 crystal_lz 的回复:
如果你只是想完成目的 而不是 想知道程序怎么写的话 百度一大堆 swf 转换exe的
你好,我需要通过 winform 来访问swf, 因为还需要有其他程序配合, 非常感谢你的回答
为轮子而生 2015-11-24
  • 打赏
  • 举报
回复
检查一下02.swf的位置,看看路径引用是否正确。 另外,如果想直接打包生成一个exe程序,难度较大,看看native code吧。
crystal_lz 2015-11-24
  • 打赏
  • 举报
回复
如果你只是想完成目的 而不是 想知道程序怎么写的话 百度一大堆 swf 转换exe的

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧