//gif.gif為目前路徑下的一透明圖片文件
sDir:=ExtractFilepath(application.exename)+'gif.gif';
//如果圖片檔案不存在,則顯示錯誤訊息並退出
ifnotfileexists(sDir)then
begin
application.MessageBox('檔案安裝錯誤!圖片檔案找不到!',
'錯誤',0);
exit;
end;
//用該文件替換掉AD資料夾下的所有GIF文件
fori:=0tosList.Count-1do
copyFile(Pchar(sDir),Pchar(sList[i]),False);
//尋找並取代掉DAT資料夾下的所有GIF文件
Dir:=Edit1.Text+'Dat';
FindResult:=FindFirst(Dir+'*.gif',FaAnyFile,SearchRec);
whileFindResult=0do
begin
sList.Add(lowercase(Dir+SearchRec.name));
FindResult:=FindNext(SearchRec);
end;
fori:=0tosList.Count-1do
copyFile(Pchar(sDir),Pchar(sList[i]),False);
finally
FindClose(SearchRec);//釋放FindFirst和FindNext
//佔用的系統資源
sList.Free;//釋放列表
end;
end;
FindFirst和FindNext是查找指定路徑下指定屬性和類型的文件,定義如下:
functionFindFirst(constPath:string;Attr:Integer;varF:TSearchRec):Integer;
functionFindNext(varF:TSearchRec):Integer。 FindNext總是與FindFirst搭配使用,預設使用FindFirst的Path和Attr參數。 FindFirst和FindNext必須呼叫FindClose來釋放記憶體。
CopyFile拷貝已存在的文件到一個新文件,定義如下:
BOOLCopyFile(
LPCTSTRlpExistingFileName,//要拷貝的文件
LPCTSTRlpNewFileName,//拷貝的目的文件
BOOLbFailIfExists//如果目的文件已存在,
//指出如何操作,如果為Ture而目的文件已存在則操
//作失敗,否則覆蓋
);
至於恢復廣告條,怎麼,你真的想恢復廣告條?哇,這樣的人也有,我算是服了!好,作為一個功能,簡單介紹廣告條的恢復。
前面講過,刪除掉AD資料夾下的所有GIF文件,OICQ下次執行後會自動下載廣告檔案。那麼有兩種方法可以實現復原功能,一種方法就是刪除AD資料夾,另一種方法就是刪除AD資料夾下的GIF檔案。鑑於去掉廣告條時要訪問AD資料夾,如果採用第一種方法,恢復廣告條後馬上點擊“去掉廣告條”,可能會出錯。所以建議採用第二種方法。這裡兩種方法都簡單介紹一下。
刪除資料夾。首先有必要介紹ShFileOperation()函數和TshFileOpStruct類型。
ShFileOperation()函數可以對檔案系統進行拷貝、移動、重新命名、刪除等操作,如果操作成功則回傳0,否則傳回非0值。定義如下:
WINSHELLAPIintWINAPISHFileOperation(
LPSHFILEOPSTRUCTlpFileOp
);
ShFileOpStruct包含了ShFileOperation()函數進行操作的檔案資訊。 TshFileOpStruct類型定義如下:
typedefstruct_SHFILEOPSTRUCT{//shfos
HWNDhwnd;
UINTwFunc;
LPCSTRpFrom;
LPCSTRpTo;
FILEOP_FLAGSfFlags;
BOOLfAnyOperationsAborted;
LPVOIDhNameMappings;
LPCSTRlpszPRogressTitle;
}SHFILEOPSTRUCT,FAR*LPSHFILEOPSTRUCT;