我如何才能判断某一文件夹下某一文件是否打开,例如在C:\aa\下有一个文件abc.doc,我的程序该如何写来判断它是否打开?还望指教,谢谢!

解决方案 »

  1.   

    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;
      

  2.   

    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;
     
      

  3.   

    上述方法我试过了,我是这样调用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,还望指教,谢谢!
      

  4.   

    TXT文档,就算你打开,你还是可以把他删除
    因为他不是以独占方式打开的,所以无论你怎么样,都显示CLose,对doc文件肯定可以