📄 如何实现windows explore样式的拷贝,移动,删除,.txt
字号:
如何实现Windows Explore样式的拷贝,移动,删除,改名 (2000年12月14日)
本站更新 分类: 作者:srw 推荐: 阅读次数:556
(http://www.codesky.net)
--------------------------------------------------------------------------------
1. 使用ShellApi动态链接库函数可实现Explore风格的文件拷贝,删除,移动等。
这些功能是通过调用ShFileOperation函数来实现的。
2. 在Interface 中的uses字叵里面引用shellapi单元。
Uses shellapi;
3. 在函数中声明一个结构变量
ShFileOpStruct: TShFileOpStruct;
其中TShFileOpStruct结构如下:
Wnd: HWND; //窗口句柄
wFunc: UINT; //执行功能:copy,delete,rename,move
pFrom: PAnsiChar; //源文件
pTo: PAnsiChar; //目标文件
fFlags: FILEOP_FLAGS; //控制标志位
fAnyOperationsAborted: BOOL; //是否用户中断
hNameMappings: Pointer; //文件名对照列表指针,用于处理多个文件
lpszProgressTitle: PAnsiChar; //文件处理进度窗口的标题 //仅当标志位有FOF_SIMPLEPROGRESS时
4. 函数调用实例
◆将文件aaa拷贝到bbb
var
source,destination,title:string;
abortbyuser:boolean;
begin
source:='c:\aaa';
destination:='c:\bbb';
title:='拷贝文件';
fillchar(ShFileOpStruct, sizeof(ShFileOpStruct), 0); //变量清零
with ShFileOpStruct do
begin
Wnd:=Application.MainForm.Handle; //给窗口句柄赋值
wFunc:=FO_COPY; //实现文件拷贝
pFrom:=PChar(Source); //source为源文件名
pTo:=PChar(Destination); //destination目标文件
fFlags:=fFlags or FOF_ALLOWUNDO or FOF_SIMPLEPROGRESS or
FOF_RENAMEONCOLLISION; //设置允许撤消,显示进度,文件名
//重名则自动改名
lpszProgressTitle:=PChar(FTitle); //设置拷贝进度窗体标题
Result := ShFileOperation(ShFileOpStruct); //执行命令
FAbortByUser:=fAnyOperationsAborted; //fAnyOperationsAborted表示是
//否用户中断拷贝
end;
如果实现其它如删除,改名,移动,可将wFunc改为FO_DELETE,FO_RENAME,FO_MOVE
◆实现删除文件放入回收站功能
只要将wFunc:=FO_DELETE就可以了。要注意文件名应为全路径,否则不会放到回收站。
5. 详细的函数说明参见Delphi 4.0 [Help]->[MS SDK Help Files]->
《Win32 Developer's References》
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -