delphi 无临时文件播放内存中flash(.swf)文件

delphi 无临时文件播放内存中flash(.swf)文件

ID:19721506

大小:42.00 KB

页数:15页

时间:2018-10-05

delphi 无临时文件播放内存中flash(.swf)文件_第1页
delphi 无临时文件播放内存中flash(.swf)文件_第2页
delphi 无临时文件播放内存中flash(.swf)文件_第3页
delphi 无临时文件播放内存中flash(.swf)文件_第4页
delphi 无临时文件播放内存中flash(.swf)文件_第5页
资源描述:

《delphi 无临时文件播放内存中flash(.swf)文件》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Delphi无临时文件播放内存中的Flash(.swf)文件平时喜欢自己动手写几个小程序,利用ShockwaveFlash插件实现Flash界面,效果很好,只是有个缺陷,那就是ShockwaveFlash只能用磁盘文件形式的Flash(*.swf)文件,在分发一个简单的应用程序时都至少有一个程序(.exe)文件和一个Flash(.swf)文件,这样非常不便,后来想到把Flash(.swf)文件放到程序文件内,需要的时候在内存中播放Flash,首先想到的便是有没有这样的解决方案,但是查了n多的资料,没

2、有满意的解决方案(在ShockwaveFlash控件中有个SetMovieData()方法很像用来播放内存Flash,但MacroMedia的文档中没有这个方法的详细具体说明,对这个方法用了各种途径试了多次,没有任何有意义的反馈;另外在网上也有关于播放内存Flash的解决方案,但得收取¥或$,而我是个业余爱好者,口袋空空(而且也没有必要购买商业库。)。于是就自己动手写一个可以播放内存Flash的类。实现原理:ShockwaveFlash支持本地Flash(.swf)文件播放,比如用“file://c

3、:/UI.swf”或“c:\UI.swf”都可以播放C盘下的UI.swf文件。那么它一定调用了文件操作的各种API,因此可以通过APIHook技术来实现播放内存中的Flash文件。而主要的文件操作函数有CreateFile(…),ReadFile(…),GetFileSize(…),GetFileAttributes(…)...,使用APIHook后,我们就可以欺骗ShockwaveFlash,在其读文件时返回实际的内存中的swf文件内容。这样,我们就可以让自己的程序潇洒地使用Flash文件了。实

4、现方法: //MemoryFile.h//通过Hook文件操作函数,把读取磁盘文件的操作转向自己的实现//说明:虚拟文件名mlpFileName字符串由CMemoryFile类内部拷贝一份,而内存文件的内存块则使用传入//的内存块(重新拷贝一份太浪费内存了)。#pragmaonce//classCMemoryFile{protected://struckmembersstructMFHANDLE{……};structMFFINDHANDLE{……};staticMFFINDHANDLE*spFind

5、HandleHead;MFHANDLE*mpHandleHead;staticCMemoryFile*spHead;//ainversionlinkhead,actually,it’satrail.LPCWSTRmlpFileName;LPBYTEmlpFileBuffer;DWORDmdwFileSizeLow;DWORDmdwFileSizeHigh;DWORDmdwFileAttributes;CMemoryFile*mpNext;protected://静态数据成员//tCreateFile

6、WrecordtheTureentrypointtoCreateFileWstaticHANDLE(__stdcall*tCreateFileW)(LPCWSTRlpFileName,DWORDdwDesiredAccess,DWORDdwShareMode,LPSECURITY_ATTRIBUTESlpSecurityAttributes,DWORDdwCreationDisposition,DWORDdwFlagsAndAttributes,HANDLEhTemplateFile);static

7、BOOL(__stdcall*tReadFile)(HANDLEhFile,LPVOIDlpBuffer,DWORDnNumberOfBytesToRead,LPDWORDlpNumberOfBytesRead,LPOVERLAPPEDlpOverlapped);……//静态方法staticHANDLE__stdcallmfCreateFileW(LPCWSTRlpFileName,//pointertonameofthefileDWORDdwDesiredAccess,//access(read-

8、write)modeDWORDdwShareMode,//sharemodeLPSECURITY_ATTRIBUTESlpSecurityAttributes,//pointertosecurityattributesDWORDdwCreationDisposition,//howtocreateDWORDdwFlagsAndAttributes,//fileattributesHANDLEhTemplateFile//handletofilewithattribut

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。