用CREATEFILE可以判断以独占方式打开的文件是否被打开。但TXT和JPG等类型的文件不是以独占类型方式打开的;怎样判断这些文件是否被打开呢??????????????
怎样判断以非独占方式打开的文件(如TXT和JPG文件)是否被打开?

解决方案 »

  1.   

    拜托,你说的方法我已经在上面说过了,只适用于以独占方式打开的文件类型。
    TXT和JPG是以非独占方式打开的。你打开这种类型的文件时,可以对其进行任意操作(包括重命名,删除)。
    你说的方法行不通。
    下次回复前请自己先试试,成功了再回复.
      

  2.   

    简直不知道如何同楼主说好,当然你以独占方式打开文件时,若是文件已经被打开,那么不管对方用何种方式,你能打开成功吗?
    function IsFileInUse(const FileName:string):boolean;
    var
       hFile:THandle;
    begin
       Result:=false;
       if not FileExists(FileName) then Exit;
       hFile:=CreateFile(PChar(FileName),
                         GENERIC_READ or GENERIC_WRITE,
                         0,
                         nil,
                         OPEN_EXISTING,
                         FILE_ATTRIBUTE_NORMAL,
                         0);
       Result:=(hFile=INVALID_HANDLE_VALUE);
       if not Result then CloseHandle(hFile);
    end;
      

  3.   

    文件句柄虽然关闭了,但还有其它的线索可以判断的。
    ================================================
    请问一下是楼主的想当然还是?
    建议楼主看一下Windows操作系统的文件管理。
      

  4.   


    拜托,你说的方法我已经在上面说过了,只适用于以独占方式打开的文件类型。
    TXT和JPG是以非独占方式打开的。你打开这种类型的文件时,可以对其进行任意操作(包括重命名,删除)。
    你说的方法行不通。
    下次回复前请自己先试试,成功了再回复.
    =============================================================================
    怎么这样说话呢
      

  5.   

    看看这几篇,讲的很好
    http://www.delphibbs.com/delphibbs/dispq.asp?lid=693107
    http://dev.csdn.net/develop/article/22/22347.shtm