问哈:怎样确认文件已经打开,不用再运行打开文件程序?谢谢

解决方案 »

  1.   

    用kill 看删除不? 或能改名不
    能删除或改名就是没打开,不能删除或改名就是打开了,
      

  2.   

    下面这个判断exe文件是否已运行是很好用的,如果是要判断非可执行文件的话你自己试试能不能用。
    Private Declare Function CreateFile Lib "KERNEL32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As String, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
    Private Declare Function CloseHandle Lib "KERNEL32" (ByVal hObject As Long) As Long
    Private Const GENERIC_READ = &H80000000
    Private Const GENERIC_WRITE = &H40000000
    Private Const OPEN_EXISTING = 3
    Private Const FILE_ATTRIBUTE_NORMAL = &H80
    Private Const INVALID_HANDLE_VALUE = -1
    Private Function IsFileRun(ByVal pFile As String) As Boolean
        Dim ret As Long
        ret = CreateFile(pFile, GENERIC_READ Or GENERIC_WRITE, 0&, vbNullString, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0&)
        IsFileRun = (ret = INVALID_HANDLE_VALUE)
        CloseHandle ret
    End Function'用法:
    'if dir("c:\myfile.exe")<>"" and IsFileRun("c:\myfile.exe") then msgbox "文件c:\myfile.exe已运行!"
    '由于这个函数在文件不存在的情况下也会返回true,所以要先用dir检查一下文件是否存在。