如题:可以做全局键盘钩子,但不能屏蔽MOUSE的右键。

解决方案 »

  1.   

    以下可以:
    Form Code:
    Option ExplicitPrivate Sub Timer1_Timer()
        Dim hWnd As Long
        hWnd = GetForegroundWindow
        If Left(GetText(hWnd), 5) = "确认文件删" Then
            EnumChildWindows hWnd, AddressOf WndChildProc, 0&
        End If
    End Sub
    --------------------------------------------------------
    Module Code:
    Option ExplicitPublic Declare Function GetForegroundWindow Lib "user32" () As Long
    Public Declare Function EnableWindow Lib "user32" (ByVal hWnd As Long, ByVal fEnable As Long) As Long
    Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As String) As Long
    Public Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
    Public Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hWnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As LongPublic Const WM_GETTEXT = &HD
    Public Const WM_GETTEXTLENGTH = &HEPublic Function WndChildProc(ByVal hWnd As Long, ByVal lParam As Long) As Long
        Dim GC As String * 80
        GetClassName hWnd, GC, 80
        If Left(GC, 6) = "Button" Then
            If Left(GetText(hWnd), 1) = "是" Then
                EnableWindow hWnd, False
                WndChildProc = 0
                Exit Function
            End If
        End If
        WndChildProc = 1
    End FunctionPublic Function GetText(iHwnd As Long) As String
        Dim Textlen As Long
        Dim Text As String    Textlen = SendMessage(iHwnd, WM_GETTEXTLENGTH, 0, 0)
        Textlen = Textlen + 1
        Text = Space(Textlen)
        Textlen = SendMessage(iHwnd, WM_GETTEXT, Textlen, ByVal Text)
        GetText = Left(Text, Textlen)
    End Function
      

  2.   

    加上个防换的
    Option ExplicitPrivate Sub Timer1_Timer()
        Dim hWnd As Long
        hWnd = GetForegroundWindow
        If Left(GetText(hWnd), 5) = "确认文件删" Or Left(GetText(hWnd), 5) = "确认文件替" Then
            EnumChildWindows hWnd, AddressOf WndChildProc, 0&
        End If
    End Sub
      

  3.   

    使用网络还原精灵。搞定,楼上的方法有一点漏洞
    1.如果用winrar压缩那个文件,然后选择压缩后删除。接着删除压缩包中的文件……
    2.或者在dos下删除。
    不过可以用来防住一部分人。
      

  4.   

    也是,这里的人随便写一个“Kill PathFile”也就OK
    防删可以,你一个一个的运行,3K RAM也挂呀。
      

  5.   

    //使用网络还原精灵。搞定,楼上的方法有一点漏洞
    人家用的是VXD,大概关于INT 21的操做全监视,也许是吧。