首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

vb.net种怎么屏蔽掉tab+alt键,tab+alt+del,win,tab+shift+ctrl这些键盘常用的快捷键

2012-03-18 
vb.net种如何屏蔽掉tab+alt键,tab+alt+del,win,tab+shift+ctrl这些键盘常用的快捷键最近在做一个小程序想

vb.net种如何屏蔽掉tab+alt键,tab+alt+del,win,tab+shift+ctrl这些键盘常用的快捷键

  最近在做一个小程序 
 
  想实现 程序加载的时候

  屏蔽掉tab+alt键,ctrl+alt+del,win,tab+shift+ctrl这些键盘常用的快捷键

  听说消息钩子可以实现 不过小弟才疏学浅 不知道怎么写?

  还请各位达人指教 我需要的是VB.net的代码形式

  最好不要粘贴那种你我一看到就头晕的长篇代码 谢谢
 
  一经测试成功 分送上 结贴

[解决办法]
屏蔽alt键和ctrl,shift的代码

VB.NET code
    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown        If e.Alt = True Then                e.Handled = True        End If        If e.ctrl= True Then                e.Handled = True        End If        If e.shift= True Then                e.Handled = True        End If    End Sub    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load        Me.KeyPreview = True    End Sub
[解决办法]
屏蔽alt+F4的方法,你参照这个写吧
VB.NET code
    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown        If e.Alt = True Then            If e.KeyCode = Keys.F4 Then                e.Handled = True            End If        End If    End Sub    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load        Me.KeyPreview = True    End Sub
[解决办法]
通过KeyPress(),KeyDown和KeyUp事件实现屏蔽
也可引用[DllImport("user32.dll", SetLastError = true)]
public static extern bool RegisterHotKey(
IntPtr hWnd,
int id,
int fsModifiers,//alt = 1, none = 0, win = 8;
Keys virtualKey
);

[DllImport("user32.dll", SetLastError = true)]
public static extern bool UnregisterHotKey(
IntPtr hWnd,
int id
);
实现
http://blog.csdn.net/benqmm/archive/2005/12/18/555634.aspx
[解决办法]
整个系统屏蔽也可以,把要屏蔽的添加成热键,自己写代码,如果什么都不写就相当于屏蔽掉了
把你要屏蔽的添加进来就好了
VB.NET code
Public Declare Auto Function RegisterHotKey Lib "user32.dll" Alias _      "RegisterHotKey" (ByVal hwnd As IntPtr, ByVal id As Integer, ByVal fsModifiers As Integer, ByVal vk As Integer) As Boolean    Public Declare Auto Function UnRegisterHotKey Lib "user32.dll" Alias _        "UnregisterHotKey" (ByVal hwnd As IntPtr, ByVal id As Integer) As Boolean    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load        '注册全局热键         RegisterHotKey(Handle, 0, 7, Keys.C)        RegisterHotKey(Handle, 1, Nothing, Keys.L)        ' 0=nothing 1 -alt 2-ctrl 3-ctrl+alt 4-shift 5-alt+shift 6-ctrl+shift 7-ctrl+shift+alt    End Sub    Private Sub Form1_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed        UnRegisterHotKey(Handle, 0)        UnRegisterHotKey(Handle, 1)    End Sub    Protected Overrides Sub WndProc(ByRef m As Message)        If m.Msg = 786 Then           select case m.WParam.ToInt32               case 0,1              case else                 MyBase.WndProc(m)           end select        end if    End Sub
[解决办法]
写丢了点
Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = 786 Then


select case m.WParam.ToInt32 
case 0,1
case else
MyBase.WndProc(m)
end select
else
MyBase.WndProc(m)
end if
End Sub

热点排行