EXE 到 SWF 文件的转换代码
//-------------------------------------------------------------
/* Exe 格式 到 SWF 各式转换程序
支持Flash6格式
源码很容易看懂!
有问题来信live_on@sohu.com 狭路相逢
这个函数是我的Live Flash 播放器的一部分 下载请到 http://www.2ccc.com/softf/2111_livefla.zip
呵呵,宣传而已:-)
*/
#include <vcl.h>
#pragma hdrstop
#include "exef.h"
//-------------------------------------------------------------
#pragma package(smart_init)
AnsiString exe2swf(AnsiString FileName) //函数名
{
int iFileHandle;
unsigned long iFileLength;
unsigned long iBytesRead;
AnsiString dFileName;
unsigned char *pszBuffer;
//unsigned char *Buffer;
iFileHandle = FileOpen(FileName.c_str(), fmOpenRead);//打开文件
iFileLength = FileSeek(iFileHandle,0,2);//确定长度
FileSeek(iFileHandle,0,0);
pszBuffer = new char[iFileLength+1]; //读入源文件
if (pszBuffer==NULL)
{
return(NULL);
}
iBytesRead = FileRead(iFileHandle, pszBuffer, iFileLength);
FileClose(iFileHandle);//关闭
//dFileName=
dFileName=FileName.UpperCase ().SubString (1,FileName.Length () - 4)+".SWF" ;//生成目标文件名
// if (FileExists(dFileName)) //确定是否存在
// return (NULL);
//printf("%d ",iBytesRead);
int i=0;
int ii=0;
for (i=0 ;i<iFileLength-2;i++) //匹配识别字符 FWS
{
//pszBuffer++;
if ((pszBuffer[i-2]==0)&&(pszBuffer[i-1]==0)&&(pszBuffer[i]=='F')&&(pszBuffer[i+1]=='W')&&(pszBuffer[i+2]=='S'))
{
ii=i;
}
}
i=ii;
pszBuffer=pszBuffer+i;
iFileHandle = FileCreate(dFileName.c_str() );
if (i!=376831&&i!=286719&&i!=811008) //是否为 4。5。6版本
{
if(!Application->MessageBoxA("文件格式异常!强制播放?","警告",IDOK))
return (NULL);
}
FileWrite(iFileHandle, pszBuffer,iFileLength-i );
FileClose(iFileHandle);
delete [] pszBuffer;
return(dFileName);
}
作者邮箱:lone@eyou.com
Tags:
作者:佚名评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论