DELPHI编程清除Windows Media Player的播放记录
1 引言
Windows Media Player是一款流行的媒体播放器,为了使
它更容易为您找到经常播放的内容,Windows媒体播放器的“文件”菜单保存了最近访问的文件和网址列表。它可能会严重危及您的隐私,任何人都可以看到你看过什么电影,听什么歌等。那么如何将它们清除呢?一般的方法是通过操作注册表来完成。对于一般用户来说,操作注册表不但麻烦,而且还容易出错。现在已有很多程序可以清除,比如360安全卫士等。本文介绍利用DELPHI7编程,来清除Windows Media Player的播放记录。 2 基本原理
图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 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;
begin 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中运行通过。
DELPHI编程清除Windows Media Player的播放记录-文档资料



