笨办法:
加个菜单控件,设置个空选项
再把这个菜单选项的快捷键设置成ctrl◆alt◆del
.net的代码真木有写过.
VB 可以屏蔽 包括ctrl◆alt◆del在内的所有键盘按键消息
其实你只要后台截获按键的消息后,直接屏蔽掉就可以了.
VB代码我有 net木有.
最简单的就是把属性改一下,效果跟无框的差不多.
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedSingle
Me.ControlBox = False
Me.MaximizeBox = False
Me.Text = ""
至于hook的问题,它确实是比系统慢了一步得到消息,当前线程或全局的都一样,不过你可以先拦截Windows键或者Up键其中一键来阻拦组合键.
只是文本框的话:
Private Const charSet As String = "abcdefghijklmnopqrstuvwxyz"
Private Sub textbox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles textbox1.KeyPress
If charSet.IndexOf(e.KeyChar) = -1 And e.KeyChar "" Then
e.Handled = True
End If
End Sub
这样只能输入charset 规定的字符
◆
Tab回调窗体
Option
Explicit
Private
Declare
Function
GlobalAddAtom
Lib
Alias
"GlobalAddAtomA"
(ByVal
lpString
_
As
String)
Integer
'为全局热键添加一个标识符
RegisterHotKey
hWnd
Long,
ByVal
ID
fsModifiers
vk
Long)
Long
'hWnd:接收热键产生WM_HOTKEY消息的窗口句柄
'id:定义热键的标识符,GlobalAddAtom函数获得热键的标识符.
'MOD_ALT为Alt键,MOD_CONTROL为Ctrl键,MOD_SHIFT为Shift键,MOD_WIN为Windows按键.
'vk:定义热键的虚拟键码.
UnregisterHotKey
)
PeekMessage
"PeekMessageA"
(lpMsg
Msg,
wMsgFilterMin
wMsgFilterMax
wRemoveMsg
WaitMessage
()
Type
POINTAPI
x
y
End
Msg
Message
wParam
lParam
time
pt
Const
MOD_ALT
=
PM_REMOVE
WM_HOTKEY
Dim
HotKey_ID
HotKey_Flg
Boolean
Sub
Form_Click()
Me.Hide
GlobalAddAtom("Alt
Tab")
'RegisterHotKey
Me.hWnd,
HBFFF,
MOD_CONTROL
MOD_ALT,
vbKeyG
'注册
Ctrl◆Alt◆
G
为热键
HotKey_ID,
False
Do
While
Not
'等待消息
If
PeekMessage(Message,
WM_HOTKEY,
PM_REMOVE)
Then
'检查是否热键被按下
''''可以在此写入你要阻止的代码
Me.Show
DoEvents
'转让控制权,允许操作系统处理其他事件
Loop
Form_Unload(Cancel
Integer)
'撤销热键的注册
True
Call
UnregisterHotKey(Me.hWnd,
HotKey_ID)
以上就是土嘎嘎小编为大家整理的vb.net屏蔽组合键相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!