易语言核心库播放内存中的MP3源码
系统结构:播放内存MP3,GetProcAddress,LoadLibrary,lstrcpyn,VirtualProtect,CreatePipe,WriteFile_,CloseHandle,FreeLibrary,
======窗口程序集1
| |
| |------ __启动窗口_创建完毕
| |
| |------ 播放内存MP3
| |
| |
======调用的Dll
| |
| |---[dll]------ GetProcAddress
| |
| |---[dll]------ LoadLibrary
| |
| |---[dll]------ lstrcpyn
| |
| |---[dll]------ VirtualProtect
| |
| |---[dll]------ CreatePipe
| |
| |---[dll]------ WriteFile_
| |
| |---[dll]------ CloseHandle
| |
| |---[dll]------ FreeLibrary
调用的DLL命令:
.DLL命令 GetProcAddress, 整数型, "kernel32", "GetProcAddress", , 返回函数地址
.参数 hModule, 整数型
.参数 lpProcName, 文本型
.DLL命令 LoadLibrary, 整数型, "kernel32", "LoadLibraryA", , 载入指定的动态链接库,并将它映射到当前进程使用的地址空间。一旦载入,即可访问库内保存的资源 成功则返回库模块的句柄,零表示失败。会设置GetLastError
.参数 lpLibFileName, 文本型, , 指定要载入的动态链接库的名称。采用与CreateProcess函数的lpCommandLine参数指定的同样的搜索顺序;
.DLL命令 lstrcpyn, 整数型, "kernel32", "lstrcpynA"
.参数 lpString1, 字节集
.参数 lpString2, 字节集
.参数 iMaxLength, 整数型
.DLL命令 VirtualProtect, 整数型, "kernel32.dll", "VirtualProtect"
.参数 lpAddress, 整数型
.参数 dwSize, 整数型
.参数 flNewProtect, 整数型
.参数 lpflOldProtect, 整数型, 传址
.DLL命令 CreatePipe, 整数型, "kernel32", "CreatePipe", , 创建一个匿名管道 非零表示成功,零表示失败。会设置GetLastError
.参数 phReadPipe, 整数型, 传址, 指定一个变量,设为管道读入(输出)端的一个句柄
.参数 phWritePipe, 整数型, 传址, 指定一个变量,设为管道写入(输入)端的一个句柄
.参数 lpPipeAttributes, 整数型, , SECURITY_ATTRIBUTES,指定一个SECURITY_ATTRIBUTES结构,或者传递零值(将参数声明为ByVal As 并传递零值),以便使用不允许继承的一个默认描述符
.参数 nSize, 整数型, , 管道缓冲区的建议大小。零表示用默认值;
.DLL命令 WriteFile_, 整数型, "kernel32", "WriteFile", , 将数据写入一个文件。该函数比lwrite函数要灵活的多。也可将这个函数应用于对通信设备、管道、套接字以及邮槽的处理 TRUE(非零)表示成功,否则返回零。会设置GetLastError
.参数 hFile, 整数型, , 一个文件的句柄
.参数 lpBuffer, 字节集, , 要写入的一个数据缓冲区
.参数 nNumberOfBytesToWrite, 整数型, , 要写入数据的字节数量。如写入零字节,表示什么都不写入,但会更新文件的“上一次修改时间”。针对位于远程系统的命名管道,限制在65535个字节以内
.参数 lpNumberOfBytesWritten, 整数型, 传址, 实际写入文件的字节数量
.参数 lpOverlapped, 整数型, , OVERLAPPED,倘若在指定FILE_FLAG_OVERLAPPED的前提下打开文件,这个参数就必须引用一个特殊的结构。那个结构定义了一次异步写操作。否则,该参数应置为空(将声明变为ByVal As 并传递零值);
.DLL命令 CloseHandle, 整数型, "kernel32", "CloseHandle", , 关闭一个内核对象。其中包括文件、文件映射、进程、线程、security和同步对象等。涉及文件处理时,这个函数通常与vb的close命令相似。应尽可能的使用close,因为它支持vb的差错控制。注意这个函数使用的文件句柄与vb的文件编号是完全不同的 非零表示成功,零表示失败。会设置GetLastError
.参数 hObject, 整数型, , 欲关闭的一个对象的句柄;
.DLL命令 FreeLibrary, 整数型, "kernel32", "FreeLibrary", , 释放指定的动态链接库,它们早先是用LoadLibrary ; API函数装载的 非零表示成功,零表示失败。会设置GetLastError
.参数 hLibModule, 整数型, , 要释放的一个库句柄在VB里使用只能用这个函数释放那些由应用程序明确装载的DLL。对LoadLibrary的每一次调用都应该有一个对应的FreeLibrary调用;
注:本站源码主要来源于网络收集。如有侵犯您的利益,请联系我们,我们将及时删除!
部分源码可能含有危险代码,(如关机、格式化磁盘等),请看清代码在运行。
由此产生的一切后果本站均不负责。源码仅用于学习使用,如需运用到商业场景请咨询原作者。
使用本站源码开发的产品均与本站无任何关系,请大家遵守国家相关法律。