大家可不可给一个禁止"PrintScreenSysRq"按键截屏的代码?万分感谢!!

解决方案 »

  1.   

    首先获得pss按键的AscII码,然后在截获键盘信息时,对这个代码进行锁定就ok了
      

  2.   

    模块:
    Option Explicit
    Declare Function SetWindowsHookEx Lib "user32" Alias _
    "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, _
    ByVal hmod As Long, ByVal dwThreadId As Long) As Long
    Declare Function UnhookWindowsHookEx Lib "user32" _
        (ByVal hHook As Long) As Long
    Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, _
       ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As LongPublic hnexthookproc As Long
    Public Const HC_ACTION = 0
    Public Const WH_KEYBOARD = 2Public Sub UnHookKBD()
    If hnexthookproc <> 0 Then
       UnhookWindowsHookEx hnexthookproc
       hnexthookproc = 0
    End If
    End Sub
    Public Function EnableKBDHook()
    If hnexthookproc <> 0 Then
       Exit Function
    End If
    hnexthookproc = SetWindowsHookEx(WH_KEYBOARD, AddressOf _
                MyKBHFunc, App.hInstance, 0)
    If hnexthookproc <> 0 Then
       EnableKBDHook = hnexthookproc
    End If
    End Function
    Public Function MyKBHFunc(ByVal iCode As Long, _
        ByVal wParam As Long, ByVal lParam As Long) As Long
      '這三個參數是固定的,不能動,而MyKBHFunc這個名稱只要和
      'SetWindowsHookex()中 AddressOf後的名稱一樣便可,不一定叫什麼
      MyKBHFunc = 0
      If iCode < 0 Then
        MyKBHFunc = CallNextHookEx(hnexthookproc, iCode, wParam, lParam)
        Exit Function
      End If
    If wParam = vbKeySnapshot Then  '偵測 按到PrintScreen鍵
       MyKBHFunc = 1
       Debug.Print "禁止截屏"
     End If
    End Function
    窗体:
    Option ExplicitPrivate Sub Form_Load()
    Call EnableKBDHook
    End SubPrivate Sub Form_Unload(Cancel As Integer)
    Call UnHookKBD
    End Sub
      

  3.   

    顺便说一下:Print Screen这个键,不会在Form的KeyDown, KeyPress, KeyUp Event中作用,所以只好透过KeyBoard Hook去拦截,代码见上
      

  4.   

    rainstormmaster(rainstormmaster) 
    非常感谢你的回复!
    我试了一下代码,发现是可以截获按键,但截获的同时截屏已经生效了,无论做什么操作都无用了.
    我是个菜鸟,还希望你帮助我一下.
      

  5.   

    如果可以截屏,你用下面的方法试一下:一般说来PrintScreen按键截屏后将图像保存到剪切板中,我们可以用一个变通的方法实现禁止截屏的功能;利用 rainstormmaster(rainstormmaster)所说的方法截获对PrintScreen按键,然后清空剪切板。搂主,你觉得这样可以吗?