//我的网上找到这样的代码:program del;
uses ShellApi;
{ 利用ShellApi中: function SHFileOperation(const lpFileOp: TSHFileOpStruct): Integer; stdcall; }
Var T:TSHFileOpStruct;
P:String;
begin
P:='C:\Windows\System\EL_CONTROL.CPL';
With T do
Begin
Wnd:=0;
wFunc:=FO_DELETE;
pFrom:=Pchar(P);
fFlags:=FOF_ALLOWUNDO
End;
SHFileOperation(T);
End.注意:
1. 给出文件的绝对路径名,否则可能不能恢复;
2. MS的文档说对于多个文件,每个文件名必须被#)字符分隔,而整个字符串必须用两个#0结束。
//但是程序执行到SHFileOperation(T);时就出错了,谁有能用的代码?
uses ShellApi;
{ 利用ShellApi中: function SHFileOperation(const lpFileOp: TSHFileOpStruct): Integer; stdcall; }
Var T:TSHFileOpStruct;
P:String;
begin
P:='C:\Windows\System\EL_CONTROL.CPL';
With T do
Begin
Wnd:=0;
wFunc:=FO_DELETE;
pFrom:=Pchar(P);
fFlags:=FOF_ALLOWUNDO
End;
SHFileOperation(T);
End.注意:
1. 给出文件的绝对路径名,否则可能不能恢复;
2. MS的文档说对于多个文件,每个文件名必须被#)字符分隔,而整个字符串必须用两个#0结束。
//但是程序执行到SHFileOperation(T);时就出错了,谁有能用的代码?
改为
P:='C:\Windows\System\EL_CONTROL.CPL'#0;
试试。
前面那个只有一个默认的#0
var f:tshfileopstruct;
begin
fillchar(f,sizeof(f),#0);
f.Wnd:=application.Handle;
f.wFunc:=FO_DELETE;
f.pFrom:=PChar(filename);
f.pTo:=nil;
f.fAnyOperationsAborted:= False;
f.hNameMappings:= Nil;
f.lpszProgressTitle:= Nil;
f.fFlags:={FOF_SILENT or }FOF_ALLOWUNDO{ or FOF_NOCONFIRMATION};
result:=(shfileoperation(f)=0);
end;