控制mp3播放器中文件顺序
MP3播放器价格不断降低,容量一涨再涨。比如的MP3播放器是1G的,闲暇之余很喜欢
用它听评书。但在使用中发现:很难控制拷贝到mp3播放器中的文件顺序,前一章已经是
“孔明用智激周瑜”,后一回才是“刘玄德三顾草庐”。针对这个问题,做了一点研究:
文件播放顺序是播放器中的FAT表中文件的顺序,使用WinHex工具直接察看,可以看到如下:
播放起来是按照 情人—〉海阔天空 –〉光辉岁月 …… 这个顺序。
我猜测拷贝粘贴命令的顺序决定了这个顺序,而选择顺序又是放在什么地方呢?
只有一种可能:剪切板。经过一番试验,果真在剪切板上看到了拷贝的文件名。
于是,设计程序,思路是:取得获得剪切板内容,排序,再放回去。程序界面很简单
3个按钮,1个Memo。程序清单如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,Clipbrd,shellapi,shlobj;
type
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); //获得剪切板上的
var
drophandle :Thandle;
i,filescount :integer;
FileName :array[0..MAX_PATH] of Char;
begin
if clipboard.HasFormat(CF_HDROP) then //确定剪切板上是文件名称
begin
drophandle:=Clipboard.GetAsHandle(CF_HDROP);
filescount:=DragQueryFile(
Drophandle,
$FFFFFFFF,
Filename,
max_path); //获得文件拖放数目
for i:=0 to filescount-1 do
begin
fillchar(filename,sizeof(filename),0);
if DragQueryFile(drophandle,i, Filename,max_path)>0 then
ListBox1.Items.Add(strpas(@filename));
end; //获取所有拖放文件的文件名,带目录
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin //排序,实际上这部分可以做在上面建立的时候
//为了以后的扩展考虑(比如,针对日期,大小排序等等)
//特别将其放在另外的地方
ListBox1.Sorted:=True;
end;
procedure TForm1.Button3Click(Sender: TObject); //将排序后的文件名称塞回去
var
sFilenames: String;
i: Integer;
hBuffer: HGLOBAL;
pBuffer: PDropFiles;
begin
if ListBox1.Items.Count=0 then exit;
//文件名之间使用 #0 分隔,用#0#0 表示结束 #0#0
sFilenames := '';
for i := 0 to ListBox1.Items.Count - 1 do
sFilenames := sFilenames + ListBox1.Items[i]+ #0;
sFilenames := sFilenames + #0;
hBuffer := GlobalAlloc(GMEM_MOVEABLE or GMEM_ZEROINIT,
SizeOf(DROPFILES) + Length(sFilenames));
pBuffer := GlobalLock(hBuffer);
// 建立 "DROPFILES" 结构体
pBuffer^.pFiles := SizeOf(DROPFILES);
pBuffer := Pointer(Integer(pBuffer) + SizeOf(DROPFILES));
CopyMemory(pBuffer, PChar(sFilenames), Length(sFilenames));
Clipboard.SetAsHandle(CF_HDROP, hBuffer);
end;
end.
试验一下:选定文件,ctrl+c ,用我们的程序先看一下剪切板上的内容
控制mp3播放器中文件顺序相关推荐
- php 音频顺序播放,MP3播放器音频文件不按顺序播放的解决方法,简单实用
MP3播放器对于现在的我们来说很多已经是过去了,但是我们总会有用到它的时候:当你听一些录音课程或者评书故事,亦或者使用迷你音响播放歌曲时常会发现拷贝进MP3播放器中的音频文件根本不按照你自己的想象进行 ...
- 远程WEB控制MP3播放器设计(基于mini2440)
网上有很多 基于mini2440的MP3播放器设计的资料,多是按键控制,这里博主做了些轻微改动,利用远程WEB来控制MP3播放,具体怎么实现,下面会给出,大家先看看效果: WEB界面: 后台运行: 因 ...
- php怎么控制mp3播放器,简单的C++ MP3播放器类
作者:Wong Shao Voon 如果你需要的只是在你的应用程序中播放MP3(例如,在应用程序启动画面播放很短的MP3),对于这样简单的需求,可以使用C++ MP3/WMA DirectShow播放 ...
- php怎么控制mp3播放器,【更新2018/12/07】简单的MP3播放器
本帖最后由 kumamiko 于 2018-12-7 11:02 编辑 snipaste_20181113_122405.png (63.66 KB, 下载次数: 0) 2018-11-13 12:3 ...
- 安卓音乐播放器中歌词同步问题
音乐文件是.lrc格式的,lrc格式的文件,是MP3播放器唯一能识别的歌词文件,在MP3播放器中可以去同步 显示歌词.它是一种包含着"[]"形式的"标签"的.基 ...
- 全球音质最好的MP3播放器——BeoPlayer V4.65
软件大小:25773KB 软件类别:国外软件/音频处理 软件授权:共享版 软件语言:英文 运行环境:Win9x/Me/NT/2000/XP/2003 官方网站(Homepage) 更新日志(Vers ...
- android开发--mp3播放器项目源代码(xml文件解析,.lrc,.mp3文件下载,同时显示歌词)
一.mp3播放器源代码 1.MainActivity.java:在此中主要负责播放器首页的功能,包括服务器上的下载列表,和SD卡上已经下载的mp3文件列表package com.wyt.MP3play ...
- 数码相框_通过随机选择的媒体文件轻松加载数码相框和MP3播放器
数码相框 Has your digital picture or music library become so large that you have a hard time sifting thr ...
- 基于嵌入式Linux的MP3播放器的设计与实现
摘要:本文详细介绍了嵌入式系统的特点以及嵌入式系统开发的流程,分析基于嵌入式Linux的MP3播放器的关键技术,设计和实现了一种基于嵌入式系统的 MP3 播放器.该播放器利用 QT 技术和开源的音频解 ...
最新文章
- 一个创业者的自我修养2019版
- Python中的正则表达式(基础)
- leetcode 306. Additive Number | 306. 累加数(Java)
- php生成extjs下拉树json数据格式
- php之clone 复制对象以及__clone魔术方法
- [css] 圣杯布局和双飞翼布局的理解和区别,并用代码实现
- 软件包管理 之 fedora-rpmdevtools 工具介绍
- LeetCode 271. 字符串的编码与解码(4位16进制字符+字符串)
- windows 2012 AD域报错ladp非法绑定
- android+sim卡短信,android 信息(mms)开发(七)-- sim卡短信
- MOSS 2007 错误0x80040E14解决
- Java 基础——日期(Date)的解析
- 华为设备离线什么意思_华为手机中的P、Mate、nova分别是什么意思?看完你全懂了...
- 【CNN】四张图彻底搞懂CNN反向传播算法(通俗易懂)
- 对接极光IM之修改头像
- 使用Python获取键盘的输入
- 【Linux实验】用户和组群账户管理
- C语言——分支语句和循环语句
- 5分钟了解赴港上市公司CEO薪酬
- pr文字转语音有插件吗_Pr视频如何快速的添加字幕(语音转字幕)
热门文章
- python的默认安装位置
- Mysql查看慢查询日志
- android 炫酷特效,Android 特效之炫酷水波纹动画
- 周记,本周前端的学习
- rsync 出现 chown 您的目录 failed: invalid argument(22)
- blockiy games
- 我的世界am2服务器稳定版本,[1.15.2]如月倾城—高版本丨稳定流畅丨长期开放丨I9 9900K运行单服...
- [免费]DJNativeSwing-SWT.jar,DJNativeSwing.jar下载
- linux中ping命令网络不可达或ping www.baidu.com未知的名称与服务
- 寻找两个有序数组的中位数(C++)