怎么判断一个文件是否处于使用中
怎么判断一个文件是否处于使用中,可否将下面代码用AU3写出来,谢谢!Private Declare Function lOpen()Function lOpen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As LongPrivate Declare Function lClose()Function lClose Lib "kernel32" Alias "_lclose" (ByVal hFile As Long) As Long
' 判断某文件是否在使用中
Public Function IsFileAlreadyOpen()Function IsFileAlreadyOpen(ByVal FileName As String) As Boolean
Dim hFile As Long
Dim lastErr As Long
hFile = -1 ' 初始化文件句柄.
lastErr = 0
hFile = lOpen(FileName, &H10)
If hFile = -1 Then ' 文件是否能正确打开并可共享
lastErr = Err.LastDllError
Else
lClose(hFile)
End If
IsFileAlreadyOpen = (hFile = -1) And (lastErr = 32)
End Function
Private Sub Command1_Click()Sub Command1_Click()
Dim strFileName As String
strFileName = "d:\050304_chengji.xls" ' 你的文件
If IsFileAlreadyOpen(strFileName) Then
MsgBox("指定文件已打开")
Else
MsgBox("指定文件未打开")
End If
End Sub
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zy227/archive/2008/01/16/2046856.aspx 为什么用的是XLS ,如果是txt不知道好用不好用,
上面的代码我不会写,牵扯到dll调用了吧?
我判断一个文件是否使用中的方法是重命名,如果成功就是没被占用否则就是被占用状态 回复 2# love5173
谢谢,看来目前,只能学您的用法了 回复 3# xwlzx
如果是xls的话 用open就可以了,写入模式,能打开就是没被占用,重命名的话如果是自己用还好,如果是公共文件会影响别人用 回复 4# love5173
是的,我现在就是用OPEN判断的,谢谢 excel文件的话,直接objget("excel.application"),然后枚举全部打开的工作簿全路径名,与指定文件全路径名对比,不过如果存在多个excel进程的话,还是有点麻烦。 有一种不用VBA判断XLS文件是否打开的方法。
判断当前打开的XLS文件同级目录下,是否存在一个以~$开头的文件名相同的XLS文件。
该文件是XLS临时文件,是隐藏状态,需要把“文件夹选项”=>“查看”=>“显示所有文件和文件夹”选项打开才可以看到。 作者 Yashied
Func _WinAPI_FileInUse($sFile)
Local $hFile = _WinAPI_CreateFileEx($sFile, 3, 0x80000000, 0)
If $hFile Then
_WinAPI_CloseHandle($hFile)
Return 0
EndIf
Local $Error = _WinAPI_GetLastError()
Switch $Error
Case 32 ; ERROR_SHARING_VIOLATION
Return 1
Case Else
Return SetError($Error, 0, 0)
EndSwitch
EndFunc ;==>_WinAPI_FileInUse
試試看吧... 回复 8# rchockxm
谢谢! 8#的还不错 试试
页:
[1]