EXE到SWF文件的转换代码
//————————————————————-
/* Exe 名目 到 SWF 各式转换措施
支持Flash6名目
源码很容易看懂!
有问题来信[email protected] 狭路相逢
这个函数是我的Live Flash 播放器的一部门
*/
#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 \n",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);
}