摘 要:Windows Media Player是一款流行的媒體播放器。為了使它更容易為您找到經(jīng)常播放的內(nèi)容,Windows媒體播放器保持您最近訪問的文件和網(wǎng)址列表。它可能會嚴重危及您的隱私,您應該清理Windows Media Player的歷史。本文介紹了通過DELPHI操作注冊表,實現(xiàn)Windows Media Player的播放記錄的清除。
關鍵詞:播放器;DELPHI;注冊表
中圖分類號:TP311 文獻標識碼:A
1 引言
Windows Media Player是一款流行的媒體播放器,為了使它更容易為您找到經(jīng)常播放的內(nèi)容,Windows媒體播放器的“文件”菜單保存了最近訪問的文件和網(wǎng)址列表。它可能會嚴重危及您的隱私,任何人都可以看到你看過什么電影,聽什么歌等。那么如何將它們清除呢?一般的方法是通過操作注冊表來完成。對于一般用戶來說,操作注冊表不但麻煩,而且還容易出錯?,F(xiàn)在已有很多程序可以清除,比如360安全衛(wèi)士等。本文介紹利用DELPHI7編程,來清除Windows Media Player的播放記錄。
2 基本原理
Windows Media Player 的播放記錄存儲在注冊表中,運行注冊表編輯器,逐級展開到“HKEY_CURRENT_USER\Software\Microsoft\MediaPlayer\Player\RecentFileList”[1],此時程序的右半部出現(xiàn)了許多鍵值,它們按“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 ;//創(chuàng)建注冊表對象
myreg.RootKey :=hkey_current_user;
if myreg.OpenKey('software\microsoft\MediaPlayer\Player\RecentFileList',1) 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]);//循環(huán)讀取注冊表鍵值,并將其添加到列表框中
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',1) then
begin
myreg.DeleteKey('recentfilelist');//刪除主鍵
myreg.CreateKey('recentfilelist');//創(chuàng)建主鍵
myreg.CloseKey ;
end;
if myreg.OpenKey('software\microsoft\mediaplayer\player\recentfilelist',1) 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注冊表,實現(xiàn)清除Windows Media Player的播放列表。以上程序稍加修改,即可實現(xiàn)諸如調(diào)整IE地址欄中的網(wǎng)址、清除realplayer的播放記錄等功能。本程序在DELPHI7.0,WINDOWS XP中運行通過。
參考文獻
[1] 精靈.清除Windows Media Player的播放記錄[J].網(wǎng)友世界,
2005,(14):31.
[2] 何定華.Delphi中利用MAC地址實現(xiàn)軟件注冊[J].微計算機信
息,2011,27(2):246-248.
[3] 孫秀玲.基于Delphi的中西文輸入法的智能切換[J].長春工程
學院學報(自然科學版),2009,10(4):88-91.
作者簡介:
叢迎九(1968-),男,本科,副教授.研究領域:軟件開發(fā).