function IsFileInUse(fName : string ) : boolean; varHFileRes : HFILE;beginResult := false;if not FileExists(fName) thenexit;HFileRes := CreateFile(pchar(fName), GENERIC_READ or GENERIC_WRITE,0, nil, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, 0);Result := (HFileRes = INVALID_HANDLE_VALUE);if not Result thenCloseHandle(HFileRes);end;
function IsFileInUse(fName : string ) : boolean; varHFileRes : HFILE;beginResult := false;if not FileExists(fName) thenexit;HFileRes := CreateFile(pchar(fName), GENERIC_READ or GENERIC_WRITE,0, nil, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, 0);Result := (HFileRes = INVALID_HANDLE_VALUE);if not Result thenCloseHandle(HFileRes);end;
上述方法我试过了,我是这样调用function的: procedure TForm1.Button1Click(Sender: TObject); begin if IsFileInUse('C:\skin.txt')=false then showmessage('close') else if IsFileInUse('C:\skin.txt')=true then showmessage('open'); end; 但问题是:无论我这一文件是否打开,showmeassage总是显示close,还望指教,谢谢!
varHFileRes : HFILE;beginResult := false;if not FileExists(fName) thenexit;HFileRes := CreateFile(pchar(fName), GENERIC_READ or GENERIC_WRITE,0, nil, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, 0);Result := (HFileRes = INVALID_HANDLE_VALUE);if not Result thenCloseHandle(HFileRes);end;
varHFileRes : HFILE;beginResult := false;if not FileExists(fName) thenexit;HFileRes := CreateFile(pchar(fName), GENERIC_READ or GENERIC_WRITE,0, nil, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, 0);Result := (HFileRes = INVALID_HANDLE_VALUE);if not Result thenCloseHandle(HFileRes);end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if IsFileInUse('C:\skin.txt')=false then
showmessage('close')
else if IsFileInUse('C:\skin.txt')=true then
showmessage('open');
end;
但问题是:无论我这一文件是否打开,showmeassage总是显示close,还望指教,谢谢!
因为他不是以独占方式打开的,所以无论你怎么样,都显示CLose,对doc文件肯定可以