注册 登录
星韵地理网 返回首页

我看信息技术 http://www.xingyun.org.cn/?1671 [收藏] [复制] [分享] [RSS] 关注教育技术在地理教学中的应用以及地理教师信息技术水平的提高!

日志

提取嵌入在PowerPoint中的Flash资源[转]

已有 685 次阅读2007-11-20 10:03 |个人分类:课件制作|

这个是我在网上看到的唯一方法,也没有试过是否可行。

总之,这个方法很有点复杂……

原文地址


  嵌入到PPT中的flash不容易提出,但并不是不能提出,下面是如何从PPT文件中提取swf文件。

  找到Flash资源所在的幻灯片,选中Flash影片点右键选择“复制”。然后打开“资源管理器”,随便进入一个文件夹内,点鼠标右键选择“粘贴”,这时在文件夹内会出现一个文件名为“片段”的新文件。这次我们要利用UltraEdit-32软件。

  启动UltraEdit-32选择打开上面得到的“片段”文件。执行“搜索”菜单中的“查找”。按照下图设置好查找条件。

  搜索结果如图。

  注意看“46 57 53”三个字节后面的五个字节,即“08 92 46 00 00”(不同Flash由于文件大小和版本不同,五个字节的实际值不可能和这里完全一样)。这五个字节有特定的意义:第一个表示Flash版本号,后四个表示该Flash文件的大小。特别要提醒的是:这里的数值是以十六进制计算的而且是倒序排列的,即文件大小是十六进制的00004692(下面计算时0000要省略)。用操作系统中自带的“计算器”软件把十六进制的“4692”换算成十进制等于“18066”。现在,回到UltraEdit-32中用鼠标选中从“46 57 53”开始向下的18066字节大小区间并复制(UltraEdit-32的状态栏中可以直接看到选定大小,如图)。

  在UltraEdit-32中新建一个文件并输入“1“,然后点工具栏中红色“H”切换到16进制方式,选中“31”(“31”是数字“1”的ASCII码)后点鼠标右键“粘贴”。最后以扩展名.swf保存该文件就大功告成了。(如果UltraEdit-32改用WinHex相似,利用选块,编辑,进入新文件,另存为就可以。)


=================================

  如上方法中用UltraEdit-32软件,若原来的SWF文件很大,选择起来有一定的麻烦,其实我们还可以利用一些现成的软件. 基本思想如下: 1、用UltraEdit-32把“FWS”之前的部分剪去,然后另存为SWF。(这个时候就可以用了,只是文件体积太大。) 2、利用软件把SWF转变成EXE。(用FlashPlayer->创建播放器->转变为exe文件) 3、利用软件把EXE再变成SWF。(一时找不到软件,可将下面代码(红色字)存为 exe2swf.vbs,将exe格式的flash拖放在此文件上,即可生成swf文件.)


\'exe2swf工具,
\'用法:将exe格式的flash拖放在此文件上,即可生成swf文件,
\'haiwa@http://www.51windows.Net
\'感谢jimbob提供帮助.
dim AsoR,FlashFileName
Set ArgObj = WScript.Arguments

dim PositionStart,OKed,Tag,EndSize
PositionStart = 920000\'flash 4的播放器的大致字节数
EndSize = 8 \'exe文件结尾字节数,其它版本可以设置为0
FlashFileName = ArgObj(0)\'传递路径

set AsoR=CreateObject("Adodb.Stream")
AsoR.Mode=3
AsoR.Type=1
AsoR.Open
set AsoW=CreateObject("Adodb.Stream")
AsoW.Mode=3
AsoW.Type=1
AsoW.Open
AsoR.LoadFromFile(FlashFileName)

OKed = true
dim filesize
filesize = AsoR.size

if filesize>PositionStart then
while OKed
AsoR.Position = PositionStart
Tag = Bin2Str(AsoR.read(20))
if instr(Tag,"0000000") >0 then
PositionStart = PositionStart + 1
else
PositionStart = PositionStart + 20
end if
if Tag = "00000000000000000708783" or Tag = "00000000000000000678783" then
OKed = false
end if
\'if PositionStart > filesize then
\' OKed = false
\'end if
wend
else
msgbox "文件错误"
end if
PositionStart = PositionStart + 16
\'msgbox PositionStart
AsoR.Position = PositionStart
AsoW.write AsoR.read(filesize-int(PositionStart)-int(EndSize))

\'新文件名
dim newFileName
\'newFileName = left(FlashFileName,len(FlashFileName)-4) & ".swf"
newFileName = FlashFileName & ".swf"

Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FileExists(newFileName)) Then
overwrite = msgbox(newFileName&" 已存在"& vbnewline &"要替换它吗?",308,"文件已经存在 - exe2swf脚本")
if overwrite=6 then
AsoW.SaveToFile newFileName, 2
else
msgbox "操作被取消",0,"exe2swf脚本"
end if
else
AsoW.SaveToFile newFileName, 1
end if

AsoR.close
set AsoR=nothing
AsoW.close
set AsoW=nothing

Function Bin2Str(Bin)
Dim I, Str
For I=1 to LenB(Bin)
clow=MidB(Bin,I,1)
if ASCB(clow)<128 then
Str = Str & (ASCB(clow))
else
I=I+1
if I <= LenB(Bin) then Str = Str & (ASCW(MidB(Bin,I,1)&clow))
end if
Next
Bin2Str = Str
End Function

发表评论 评论 (1 个评论)

flicker 彩虹炫 | flicker 匿名卡 | rabbitwood 2007-12-8 01:53
试了,有效,非常感谢!!![emot]11[/emot]

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

QQ|Archiver|小黑屋|星韵百科|星韵地理网 ( 苏ICP备16002021号 )

GMT+8, 2024-5-15 11:37 , Processed in 0.075397 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

返回顶部