代码之家  ›  专栏  ›  技术社区  ›  RealHowTo

检查文件是否已从其他进程打开

  •  3
  • RealHowTo  · 技术社区  · 16 年前

    2 回复  |  直到 16 年前
        1
  •  4
  •   RealHowTo    16 年前

    我发现的最好的方法是调用WinAPI CreateFile以独占模式打开给定的文件。

    首先,声明以下本地外部函数(PB10)

    FUNCTION Long CreateFile(ref string lpszName, long fdwAccess, long fdwShareMode, long lpsa, &
    long fdwCreate, long fdwAttrsAndFlags, long hTemplateFile) LIBRARY "Kernel32.dll" &
    ALIAS FOR "CreateFileA;Ansi"
    FUNCTION boolean CloseHandle (long file_hand) LIBRARY "KERNEL32.DLL"
    

    然后从Powerscript:

    CONSTANT ulong GENERIC_ACCESS = 268435456  //  &H10000000
    CONSTANT ulong EXCLUSIVE_ACCESS = 0
    CONSTANT ulong OPEN_EXISTING = 3
    
    long ll_handle
    String ls_file 
    
    ls_file = "c:\temp\myfile.xls"
    
    ll_handle = CreateFile ( ls_file, GENERIC_ACCESS, EXCLUSIVE_ACCESS,  0, OPEN_EXISTING, 0, 0) 
    IF ll_handle < 1 THEN 
        MessageBox("", "Can't open, maybe missing or already opened ?!?")
    ELSE
        MessageBox("","File can be opened")
    END IF
    
    CloseHandle(ll_handle)
    
        2
  •  0
  •   Brody    16 年前

    您可以尝试打开它,如果它出错,那么它可能已经被锁定。