将FLASH的SWF文件转化为EXE: SWF2EXE
有时候会有这样的需求:将swf文件转换成自带exe格式的可执行程序,以达到可在没有安装Flash ActiveX控件的机器上运行,非常简单,上代码:
void CSWFDlg::OnOK()
{
swf2exe("C:\\tmp\\Clock.swf","C:\\tmp\\Soong.exe","C:\\tmp\\Player.exe");
}
void CSWFDlg::swf2exe(CString swffile, CString exefile, CString playerfile)
{
CFile SourceStream( swffile,CFile::modeRead );
CFile DestinyStream( exefile,CFile::modeCreate | CFile::modeWrite );
CFile LinkStream( playerfile,CFile::modeRead );
DWORD playerLen=LinkStream.GetLength();
char* buf=new char[playerLen];
LinkStream.Read(buf,playerLen);
DestinyStream.Write(buf,playerLen);
LinkStream.Close();
delete buf;
buf = new char[SourceStream.GetLength()];
SourceStream.Read(buf,SourceStream.GetLength());
DestinyStream.Write(buf,SourceStream.GetLength());
int flag = 0xFA123456;
DestinyStream.Write(&flag, sizeof(flag));
DWORD len=SourceStream.GetLength();
DestinyStream.Write(&len ,sizeof(DWORD));
SourceStream.Close();
DestinyStream.Close();
}
RT:
CODE:经过测试,同样适用于最新的Flash Player 11.7
DWORD是32bit的,不用担心32bit的整形不能添加大的falsh文件。(0xFFFFFFFF)/1024/1024/1024=4G。因此最大可以设置一个4G的flash文件。
我知道很多人对这个功能不屑,但是最新的FP已经没有生成exe的功能了,这个是个补充,比如FLASH CC已经不支持发布WIN PROJECT了。更多的人关心如何把这个加壳的EXE作为另一个主程序的UI呢?这样多高大上啊,网络上有很多方法,不再赘述了!