时间:2022-08-02 03:43:42
摘 要:Windows Media Player是一款流行的媒体播放器。为了使它更容易为您找到经常播放的内容,Windows媒体播放器保持您最近访问的文件和网址列表。它可能会严重危及您的隐私,您应该清理Windows Media Player的历史。本文介绍了通过delphi操作注册表,实现Windows Media Player的播放记录的清除。
关键词:播放器;DELPHI;注册表
中图分类号:TP311 文献标识码:A
1 引言
Windows Media Player是一款流行的媒体播放器,为了使它更容易为您找到经常播放的内容,Windows媒体播放器的“文件”菜单保存了最近访问的文件和网址列表。它可能会严重危及您的隐私,任何人都可以看到你看过什么电影,听什么歌等。那么如何将它们清除呢?一般的方法是通过操作注册表来完成。对于一般用户来说,操作注册表不但麻烦,而且还容易出错。现在已有很多程序可以清除,比如360安全卫士等。本文介绍利用DELPHI7编程,来清除windows media player的播放记录。
2 基本原理
Windows Media Player 的播放记录存储在注册表中,运行注册表编辑器,逐级展开到“HKEY_CURRENT_USER\Software\Microsoft\MediaPlayer\Player\RecentFileList”[1],此时程序的右半部出现了许多键值,它们按“file1”“file2”,…的顺序排列,这些就是Windows Media Player播放器的历史记录,如图1所示。
图1 注册表中保存的Windows Media Player 的播放记录
其中的file1-file7即为注册表中保存的Windows Media Player的播放记录信息,只要删除相应的键即可清除相应的播放记录。
Delphi提供了TRegistry类,可以对Windows的注册表进行相关操作[2,3]。
3 界面设计
在默认窗体Form1上添加如下组件:一个checklistbox组件,三个speedbutton组件,一个EDIT组件,设计完成后运行的界面如图2所示。
图2 运行界面
4 程序源代码
由于要操作注册表,因此要特别注意在USES单元中引用Registry。主要功能代码如下:
//程序启动时将播放记录加到列表中
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
myreg:tregistry;//引用注册表类
regkeys:tstringlist;
value:string;
begin
myreg:=tregistry.Create ;//创建注册表对象
myreg.RootKey :=hkey_current_user;
if myreg.OpenKey('software\microsoft\MediaPlayer\Player\RecentFileList',false) then
//打开注册表主键
begin
regkeys:=tstringlist.Create ;
myreg.GetValueNames(regkeys);//获取键名
for i:=0 to regkeys.Count -1 do
if (myreg. GetDataType(regkeys. Strings[i])=rdstring) or (myreg. GetDataType(regkeys. Strings[i])=rdexpandstring) then
begin
value:=myreg.ReadString (regkeys.Strings[i]);//循环读取注册表键值,并将其添加到列表框中
checklistbox1.Items.Add(regkeys.Strings[i]+'='+value);
end;
end;
end;
//删除列表中选中的条目
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
i:integer;
begin
for i:=checkListBox1.Items.Count-1 downTo 0 do
begin
if checklistbox1.Checked[i] then
checklistbox1.Items.Delete(i);
checklistbox1.Refresh ;
SpeedButton3Click(Sender)//删除注册表中相关项
end;
end;
//全选操作
procedure TForm1.SpeedButton2Click(Sender: TObject);
var
i:integer;
begin
for i:=0 to checklistbox1.Count -1 do
begin
checklistbox1.Checked[i]:=true;
end;
end;
//将改动保存到注册表中
procedure TForm1.SpeedButton3Click(Sender: TObject);
var
myreg:tregistry;
k:integer;
n:integer;
begin
myreg:=tregistry.Create ;
myreg.RootKey := hkey_current_user;
if myreg.OpenKey('software\microsoft\mediaplayer\player',false) then
begin
myreg.DeleteKey('recentfilelist');//删除主键
myreg.CreateKey('recentfilelist');//创建主键
myreg.CloseKey ;
end;
if myreg.OpenKey('software\microsoft\mediaplayer\player\recentfilelist',false) then
for k:=0 to checklistbox1.Count -1 do
begin
n:=pos('=',checklistbox1.Items[k]);
myreg.WriteString('file'+inttostr(k),copy(checklistbox1.Items[k],n+1,length(checklistbox1.Items[k])-n ));
end;
myreg.CloseKey ;
myreg.Free ;
end;
//在EDIT1中显示选中的项目
procedure TForm1.CheckListBox1Click(Sender: TObject);
var
k,n:integer;
begin
k:=checklistbox1.ItemIndex ;
n:=pos('=',checklistbox1.Items[k]);
edit1.Text :=copy(checklistbox1.Items[k],n+1,length(checklistbox1.Items[k])-n );
end;
end.
5 结语
本文介绍了基于DELPHI编程,通过修改WINDOWS注册表,实现清除Windows Media Player的播放列表。以上程序稍加修改,即可实现诸如调整IE地址栏中的网址、清除realplayer的播放记录等功能。本程序在DELPHI7.0,WINDOWS XP中运行通过。
参考文献
[1] 精灵.清除Windows Media Player的播放记录[J].网友世界,
2005,(14):31.
[2] 何定华.Delphi中利用MAC地址实现软件注册[J].微计算机信
息,2011,27(2):246-248.
[3] 孙秀玲.基于Delphi的中西文输入法的智能切换[J].长春工程
学院学报(自然科学版),2009,10(4):88-91.
作者简介:
丛迎九(1968-),男,本科,副教授.研究领域:软件开发.