//-------------------------------------------------------------
/* Exe 格式 到 SWF 各式转换程序
支持Flash6格式
源码很容易看懂!
有问题来信live_on@sohu.com 狭路相逢
这个函数是我的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);
}
版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明!