关于禁止截屏的代码?

blue_x 2003-12-18 09:09:06
大家可不可给一个禁止"PrintScreenSysRq"按键截屏的代码?万分感谢!!
...全文
99 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Hope_sys 2003-12-20
如果可以截屏,你用下面的方法试一下:

一般说来PrintScreen按键截屏后将图像保存到剪切板中,我们可以用一个变通的方法实现禁止截屏的功能;利用 rainstormmaster(rainstormmaster)所说的方法截获对PrintScreen按键,然后清空剪切板。

搂主,你觉得这样可以吗?
回复
blue_x 2003-12-20
rainstormmaster(rainstormmaster)
非常感谢你的回复!
我试了一下代码,发现是可以截获按键,但截获的同时截屏已经生效了,无论做什么操作都无用了.
我是个菜鸟,还希望你帮助我一下.
回复
blue_x 2003-12-20
已然解决,多谢二位。
回复
rainstormmaster 2003-12-20
楼上的可行,你也可以尝试在捕获按键的同时,捕获剪贴板的变化
回复
rainstormmaster 2003-12-18
顺便说一下:Print Screen这个键,不会在Form的KeyDown, KeyPress, KeyUp Event中作用,所以只好透过KeyBoard Hook去拦截,代码见上
回复
rainstormmaster 2003-12-18
模块:
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 Long

Public hnexthookproc As Long
Public Const HC_ACTION = 0
Public Const WH_KEYBOARD = 2

Public 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 Explicit

Private Sub Form_Load()
Call EnableKBDHook
End Sub

Private Sub Form_Unload(Cancel As Integer)
Call UnHookKBD
End Sub


回复
liyan010 2003-12-18
首先获得pss按键的AscII码,然后在截获键盘信息时,对这个代码进行锁定就ok了
回复
发动态
发帖子
VB基础类
创建于2007-09-28

7453

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告