如何判断文件正在被使用 比如txt,avi,dat,rm等格式的文件 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 晕,关键是正在使用不能删,没有在使用了,经server端确认后才能删,server没有确认是不能删的。 //利用OpenFile Api函数判断 function FileLocked(Fn: string): Boolean; var I : Integer; Struct: TOfStruct; Style: Cardinal; Hdl: Hfile; Drive: String; begin Style := OF_Share_Exclusive; //排它方式打开 Drive := UpperCase(Fn[1]); Struct.fFixedDisk := Ord(Drive <> 'A'); //判断是否是硬盘 Struct.cBytes := SizeOf(Struct); For I := 1 to Length(Fn) do Struct.szPathName[I-1] := Fn[I]; Struct.szPathName[I] := Chr(0); //填充文件名 Hdl := OpenFile(Pchar(Fn), Struct, Style); if Hdl = HFILE_ERROR then begin Result := True; //文件被锁定 Showmessage(SysErrorMessage(GetLastError)); //显示错误原因 end else Result := False; end; //利用CreateFile Api函数判断 function LockedFile(Fn: string): Boolean; var AFile: THandle; SecAtrrs: TSecurityAttributes; begin FillChar(SecAtrrs, SizeOf(SecAtrrs), #0); SecAtrrs.nLength := SizeOf(SecAtrrs); //结构体长度 SecAtrrs.lpSecurityDescriptor := nil; //安全描述 SecAtrrs.bInheritHandle := True; //继承标志 AFile := CreateFile(PChar(Fn), GENERIC_READ or GENERIC_WRITE, FILE_SHARE_Read, @SecAtrrs, OPEN_EXISTING, FILE_ATTRIBUTE_Normal, 0); if AFile = INVALID_HANDLE_VALUE then begin Result := True; //文件被锁定 showmessage(SysErrorMessage(GetLastError)); end else Result := False; end; 从网上翻的。 我倒有一个问题了,怎么知道正在使用一文件的程序名?或其主程序的HANDLE? 我要判断的文件比较大的媒体文件 400M 左右的,openfile, createfile打开或创建,太浪费时间跟资源了 用try..except ,其中让try试图以写方式打开,如果文件正被使用,应该会抛出异常我只是想法,没经过试验,楼下继续 DELPHI如何知道MSSQL回滚了? 问个有关OLE操作WORD的问题,是WORD文档合并的问题,请大家多帮帮忙,100分送上 如何将查询到的数据集转化为gzip文件?? SOS!国外邮件,一堆乱码,如何显形?MM null 转换为'' 100分/局域网映射驱动器的小程序实现/各位大侠指点指点 如何把小数转成分数! 怎么搞的,.exe突然变大。。。 XML怎么用! 能提供用delphi开发web应用程序的资料吗?谢谢! 用delphi6怎么实现QQ好友的跳动形式 关于 delphi 与 sql的简单查询问题~谢谢
function FileLocked(Fn: string): Boolean;
var
I : Integer;
Struct: TOfStruct;
Style: Cardinal;
Hdl: Hfile;
Drive: String;
begin
Style := OF_Share_Exclusive; //排它方式打开
Drive := UpperCase(Fn[1]);
Struct.fFixedDisk := Ord(Drive <> 'A'); //判断是否是硬盘
Struct.cBytes := SizeOf(Struct);
For I := 1 to Length(Fn) do
Struct.szPathName[I-1] := Fn[I];
Struct.szPathName[I] := Chr(0); //填充文件名
Hdl := OpenFile(Pchar(Fn), Struct, Style);
if Hdl = HFILE_ERROR then
begin
Result := True; //文件被锁定
Showmessage(SysErrorMessage(GetLastError)); //显示错误原因
end
else
Result := False;
end;
//利用CreateFile Api函数判断
function LockedFile(Fn: string): Boolean;
var
AFile: THandle;
SecAtrrs: TSecurityAttributes;
begin
FillChar(SecAtrrs, SizeOf(SecAtrrs), #0);
SecAtrrs.nLength := SizeOf(SecAtrrs); //结构体长度
SecAtrrs.lpSecurityDescriptor := nil; //安全描述
SecAtrrs.bInheritHandle := True; //继承标志
AFile := CreateFile(PChar(Fn), GENERIC_READ or GENERIC_WRITE,
FILE_SHARE_Read, @SecAtrrs, OPEN_EXISTING,
FILE_ATTRIBUTE_Normal, 0);
if AFile = INVALID_HANDLE_VALUE then
begin
Result := True; //文件被锁定
showmessage(SysErrorMessage(GetLastError));
end
else
Result := False;
end;
从网上翻的。
我只是想法,没经过试验,楼下继续