我有一个使用AxShockwaveFlash嵌入Flash SWF的表单。我不再拥有原始的SWF文件,而是想从AxShockwaveFlash对象中提取它。
我尝试将OCXState拉出并将其保存到磁盘(通过立即窗口),如下所示:
((System.IO.MemoryStream)axShockwaveFlash1.OcxState.ms)
.WriteTo(System.IO.File.OpenWrite(@"C:\Users\Michael\Desktop\Test.swf"))
但该文件似乎不是有效的SWF。
如何提取嵌入的Flash文件并保存到SWF文件?
答案 0 :(得分:0)
axShockwaveFlash1.OcxState
表示存储为AxHost.State
的Active X控件的持久状态,当序列化时,它具有自己的头元数据。见AxHost.State
将其保存到文件会创建有效的SWF
文件,但包含AxHost.State
的其他元数据。通过检查SWF Header Structure,您可以看到Flash的开始位置,并使用安全编辑器(Notepad++),您可以在该点之前删除所有内容。