抄了一段代码如下:
Private Declare Function CreateFileNS Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, 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 LongConst GENERIC_READ = &H80000000
Const GENERIC_WRITE = &H40000000
Const FILE_SHARE_READ = &H1
Const FILE_SHARE_WRITE = &H2
Const OPEN_EXISTING = 3
Const FILE_ATTRIBUTE_NORMAL = &H80
Private Sub Command1_Click()
    Dim Hfile As Long, Retval As Long, fn As String
    fn = "\\.\FILEVXD"
    Hfile = CreateFileNS(fn, GENERIC_WRITE Or GENERIC_READ, FILE_SHARE_READ Or FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
    If Hfile <> -1 Then
        Retval = CloseHandle(Hfile) ' Close the file handle
        MsgBox "发现filemon!"
        Exit Sub
    Else
        MsgBox "没有发现filemon!"
    End If
End Sub请问各位高手,无论filemon是否运行,上面的代码检测结果都是"没有发现filemon!",哪里不对吗?

解决方案 »

  1.   

    直接用findwindow就好吧 何必那么麻烦
    filemon有唯一的caption:File Monitor - Sysinternals: www.sysinternals.com
    多好找
      

  2.   

    ps:filemon的窗口的类名也是唯一的classname:18467-41
      

  3.   

    还有关于你的代码的问题,不能用于xp(2000可能也不可以),filemon按操作系统fen2个版本95、98和2000、xp,前者监视文件系统是用了虚拟设备驱动程序vxd,后者的监视没有用这种方式2000、xp不支持vxd,所以你的代码不起作用估计是因为你用的是xp
      

  4.   

    谢谢,我用的正是xp,你是说xp不支持vxd吗?
    那是不是
       "\\.\SICE"
       "\\.\SIWVID"
       "\\.\NTICE"
        "\\.\TRW"
        "\\.\TRW2000"
        "\\.\TRDEBUG"
       "\\.\REGVXD"
        "\\.\BW2K"
    在xp下也不能用啊!
      

  5.   

    是的TRW 的却不能用的 别的用到vxd也不能用的