应网友邀请写的代码。

模块部分的代码:

Imports System.Runtime.InteropServicesModule Keyboard<DllImport("User32.dll", CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.StdCall)>Public Function SetWindowsHookEx(ByVal idHook As Integer, ByVal HookProc As KeyHook, ByVal hInstance As IntPtr, ByVal wParam As Integer) As IntegerEnd Function<DllImport("User32.dll", CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.StdCall)>Public Function CallNextHookEx(ByVal idHook As Integer, ByVal nCode As Integer, ByVal wParam As Integer, ByVal lParam As IntPtr) As IntegerEnd Function<DllImport("User32.dll", CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.StdCall)>Public Function UnhookWindowsHookEx(ByVal idHook As Integer) As BooleanEnd Function<DllImport("kernel32.dll", CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.StdCall)>Public Function GetModuleHandle(ByVal name As String) As IntPtrEnd Function<StructLayout(LayoutKind.Sequential)>Public Structure KBDLLHOOKSTRUCTPublic vkCode As KeysPublic scanCode As KeysPublic flags As IntegerPublic time As IntegerPublic dwExtraInfo As IntegerEnd StructurePublic Const HC_ACTION As Integer = 0Public Const WH_KEYBOARD_LL As Integer = 13Public Delegate Function KeyHook(ByVal Code As Integer, ByVal wParam As Integer, ByVal lParam As IntPtr) As Integer'<MarshalAs(UnmanagedType.FunctionPtr)>Public callback As KeyHook
End Module

窗体的代码:

   Public KeyHandle As IntegerPublic Function KeyCallback(ByVal Code As Integer, ByVal wParam As Integer, ByVal lParam As IntPtr) As IntegerIf Code >= HC_ACTION ThenDim keyStruct As KBDLLHOOKSTRUCTkeyStruct = CType(Marshal.PtrToStructure(lParam, GetType(KBDLLHOOKSTRUCT)), KBDLLHOOKSTRUCT)TextBox1.Text &= keyStruct.vkCode.ToString & ControlChars.CrLf'这里是检测并屏蔽Win按键If keyStruct.vkCode = Keys.LWin Or keyStruct.vkCode = Keys.RWin ThenReturn 1End IfEnd IfReturn CallNextHookEx(KeyHandle, Code, wParam, lParam)End FunctionPublic Sub HookKeyboard()callback = New KeyHook(AddressOf KeyCallback)Dim hins As IntPtr = IntPtr.Zerohins = GetModuleHandle(Process.GetCurrentProcess.MainModule.ModuleName)KeyHandle = SetWindowsHookEx(WH_KEYBOARD_LL, callback, hins, 0)If (KeyHandle > 0) ThenTextBox1.Text &= "启动钩子" & ControlChars.CrLfElseTextBox1.Text &= "启动钩子失败:" & Err.LastDllError & ControlChars.CrLfEnd IfEnd SubPublic Sub UnhookKeyboard()Call UnhookWindowsHookEx(KeyHandle)TextBox1.Text &= "停止钩子" & ControlChars.CrLfEnd Sub'启动钩子Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.ClickHookKeyboard()End Sub'停止钩子Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.ClickUnhookKeyboard()End SubPrivate Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.LoadMe.TopMost = TrueEnd Sub

由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供的参考。

学习更多vb.net知识,请参看 vb.net 教程 目录

vb.net 全局键盘钩子相关推荐

  1. 如何让你的程序避开全局键盘钩子的监视

    原文地址:http://blog.okbase.net/BlueSky/archive/3839.html 一直以来有个疑问,就是如果别人在你的电脑上安装了键盘钩子来监视你的键盘按键动作,我的程序怎么 ...

  2. 使用raw input 代替全局键盘钩子

    //关于raw input 请查看msdn https://msdn.microsoft.com/en-us/library/windows/desktop/ms645536%28v=vs.85%29 ...

  3. HOOK使用:全局键盘钩子

    // CatchKey.cpp : Defines the entry point for the DLL application. // #define _WIN32_WINNT 0x0500 // ...

  4. 我的全局键盘钩子(KeyBoardHook)

    1,钩子操作类 public class KeyPressSender{[StructLayout(LayoutKind.Sequential)]public class KeyBoardHookSt ...

  5. C++编写Windows全局键盘钩子记录键盘输入

    1.键盘钩子处理程序 HookProc 2.键盘钩子安装程序 InstallHook 3.键盘钩子卸载程序 UnInstallHook 4.键盘钩子dll的加载,安装与释放 生成标准windows d ...

  6. VC++钩子使用之全局键盘钩子

    文章目录 钩子简介 使用钩子 生成KeyHook.dll 加载KeyHook.dll 窗体接收两次按键消息的问题 参考 如果想要在Win32窗体程序中实现按键捕获,可以覆写PreTranslateMe ...

  7. 利用底层键盘钩子拦载任意按键(回调版)

    前段时间我曾经写过一篇<利用底层键盘钩子屏蔽任意按键>,并放到了我的blog上.这篇文章的题目中把"屏蔽"改成了"拦截",显然要比以前的版本强一些了 ...

  8. 矛与盾:用VB打造驱动级键盘记录器,能过QQ密码框(源码)

    信息监控与隐私保护永远是一对矛盾,在对付各种信息窃取软件上,新技术总是层出不穷.本文介绍一种古老的键盘记录器技术,确实很古老,DOS时代人们就在用了,但是现在它仍然很有效,在键盘过滤驱动失效的情况下, ...

  9. 利用底层键盘钩子屏蔽任意按键

    很多人都知道,如果想在系统范围内屏蔽键盘上的任意按键需要使用全局键盘钩子,然而像win键这样"倔强"的按键又不是普通的键盘钩子就能搞定的.这里我提供一种利用底层键盘钩子屏蔽任意按键 ...

  10. vs2019键盘钩子_C#键盘按键监视

    using System; using System.Diagnostics; using System.IO; using System.Runtime.InteropServices; using ...

最新文章

  1. android 周报,MAndroid 周报第八期
  2. redis服务端基本命令
  3. 写个函数用来对二维数组排序
  4. shsh验证服务器,教你从Cydia上取出SHSH并验证有效性!
  5. Spring MVC 学习笔记一 HelloWorld
  6. 257. 二叉树的所有路径 golang
  7. LSGO软件技术团队内部技术交流【2015-2016(1)第七周】
  8. 整数线性规划实现(matlab分枝界定法)
  9. hive常见的DDL操作
  10. Ubuntu 16.04 软件安装
  11. 剑指offer面试题33. 二叉搜索树的后序遍历序列(二叉树)(递归)
  12. nero 2015 installing
  13. 云服务器功能检验方法
  14. VGA显示器屏幕文字模糊(稍有重影)的解决方案
  15. Kindeditor图片粘贴上传(chrome)
  16. 华中科技大学计算机组成,华中科技大学计算机组成原理.pptx
  17. CST微波工作室边界条件和背景材料
  18. Google收购摩托罗拉移动,仅仅是为了专利吗?
  19. 问题解决:Cannot assign requested address
  20. 员工激励的核心是人的满足感

热门文章

  1. jdk的官方下载地址
  2. 开心消消乐、纯前端实现开心消消乐、开心消消乐代码、HTML+JS实现开心消消乐
  3. 彩票站漏洞引发的软件测试漏测思考
  4. 小米路由器刷 linux,小米路由器刷入Padavan系统
  5. 第三章 3.3 DI自动装配 --《跟我学Spring》笔记 张开涛
  6. python书籍下载网站_Python 精品开源电子书网站
  7. 尚硅谷大数据技术之Sqoop
  8. Dubbo视频教程--基础篇--第06节--Dubbo管理控制台的安装
  9. 屏幕镜像显示无法连接服务器,苹果屏幕镜像连接失败原因
  10. 如何使语音社交app源码实现腾讯实时音视频数据回调