• 大小: 72KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-11
  • 语言: C#
  • 标签:

资源简介

c#实现全局键盘钩子 里面都有说明

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

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

namespace KeyHookTest
{
    public partial class Form1 : Form
    {
        [DllImport(“user32.dll“)]
        public static extern int SetWindowsHookEx(int idHook HookProc hProc IntPtr hMod int dwThreadId);
        [DllImport(“user32.dll“)]
        public static extern int CallNextHookEx(int hHook int nCode IntPtr wParam IntPtr lParam);
        [DllImport(“user32.dll“)]
        public static extern bool UnhookWindowsHookEx(int hHook);
        [DllImport(“kernel32.dll“)]//获取模块句柄  
        public static extern IntPtr GetModuleHandle(string lpModuleName);

        public struct KeyInfoStruct
        {
            public int vkCode;        //按键键码
            public int scanCode;
            public int flags;       //键盘是否按下的标志
            public int time;
            public int dwExtraInfo;
        }
        
        private const int WH_KEYBOARD_LL = 13;      //钩子类型 全局钩子
        private const int WM_KEYUP = 0x101;     //按键抬起
        private const int WM_KEYDOWN = 0x100;       //按键按下

        public delegate int HookProc(int nCode IntPtr wParam IntPtr lParam);
        bool bStopMsg = false;
        int hHook = 0;
        GCHandle gc;

        public int MethodHookProc(int nCode IntPtr wParam IntPtr lParam) {
            if (nCode >= 0) {
                KeyInfoStruct inputInfo = (KeyInfoStruct)Marshal.PtrToStructure(lParam typeof(KeyInfoStruct));
                if (wParam == (IntPtr)WM_KEYDOWN) {//如果按键按下
                    textBox1.Text += “-“ + ((Keys)inputInfo.vkCode).ToString() + “-“;
                }
                if (bStopMsg)
                    return 1;
            }
            return CallNextHookEx(hHook nCode wParam lParam);//继续传递消息
        }
        public Form1() {
            InitializeComponent();
        }

        private void Form1_Load(object sender EventArgs e) {
            button1.Text = “屏蔽按键“;
            button1.Enabled = false;
            button2.Text = “设置Hook“;
        }

        private void button1_Click(object sender EventArgs e) {
            if (button1.Text == “屏蔽按键“) {
                bStopMsg = true;
                button1.Text = “解除禁用“;
            } else {
                bStopMsg = false;
                button1.Text = “屏蔽按键“;
            }
        }

        private void button2_Click(object sender EventArgs e) {
            if (0 == hHook) {
                HookProc KeyCallBack = new HookProc(MethodHookProc);
                hHook = SetWindowsHookEx(WH_KEYBOARD_LL KeyCallBack
                    GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName) 0);
                if (hHook == 0) {
                    MessageBox.Show(“设置Hook失败“);
                } else {
       

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2013-02-25 08:08  键盘钩子\
     目录           0  2013-02-25 08:08  键盘钩子\KeyHookTest\
     文件        3233  2012-06-06 03:05  键盘钩子\KeyHookTest\Form1.Designer.cs
     文件        3772  2012-09-08 17:49  键盘钩子\KeyHookTest\Form1.cs
     文件        5817  2012-06-06 03:05  键盘钩子\KeyHookTest\Form1.resx
     文件        3429  2012-06-06 02:38  键盘钩子\KeyHookTest\KeyHookTest.csproj
     文件         474  2012-06-06 02:36  键盘钩子\KeyHookTest\Program.cs
     目录           0  2013-02-25 08:08  键盘钩子\KeyHookTest\Properties\
     文件        1452  2012-06-06 02:36  键盘钩子\KeyHookTest\Properties\AssemblyInfo.cs
     文件        2767  2012-06-06 02:36  键盘钩子\KeyHookTest\Properties\Resources.Designer.cs
     文件        5612  2012-06-06 02:36  键盘钩子\KeyHookTest\Properties\Resources.resx
     文件        1074  2012-06-06 02:36  键盘钩子\KeyHookTest\Properties\Settings.Designer.cs
     文件         249  2012-06-06 02:36  键盘钩子\KeyHookTest\Properties\Settings.settings
     目录           0  2013-02-25 08:08  键盘钩子\KeyHookTest\bin\
     目录           0  2013-02-25 08:08  键盘钩子\KeyHookTest\bin\Debug\
     文件       10752  2012-06-06 03:19  键盘钩子\KeyHookTest\bin\Debug\KeyHookTest.exe
     文件       26112  2012-06-06 03:19  键盘钩子\KeyHookTest\bin\Debug\KeyHookTest.pdb
     文件       11608  2012-06-06 03:20  键盘钩子\KeyHookTest\bin\Debug\KeyHookTest.vshost.exe
     文件         490  2010-03-17 22:39  键盘钩子\KeyHookTest\bin\Debug\KeyHookTest.vshost.exe.manifest
     目录           0  2013-02-25 08:08  键盘钩子\KeyHookTest\bin\Release\
     文件       10240  2012-09-08 17:49  键盘钩子\KeyHookTest\bin\Release\KeyHookTest.exe
     文件       28160  2012-09-08 17:49  键盘钩子\KeyHookTest\bin\Release\KeyHookTest.pdb
     文件       11608  2013-02-25 11:06  键盘钩子\KeyHookTest\bin\Release\KeyHookTest.vshost.exe
     文件         490  2010-03-17 22:39  键盘钩子\KeyHookTest\bin\Release\KeyHookTest.vshost.exe.manifest
     目录           0  2013-02-25 08:08  键盘钩子\KeyHookTest\obj\
     目录           0  2013-02-25 08:08  键盘钩子\KeyHookTest\obj\x86\
     目录           0  2013-02-25 08:08  键盘钩子\KeyHookTest\obj\x86\Debug\
     文件        5428  2012-06-06 03:19  键盘钩子\KeyHookTest\obj\x86\Debug\DesignTimeResolveAssemblyReferencesInput.cache
     文件         180  2012-06-06 03:05  键盘钩子\KeyHookTest\obj\x86\Debug\KeyHookTest.Form1.resources
     文件         180  2012-06-06 02:38  键盘钩子\KeyHookTest\obj\x86\Debug\KeyHookTest.Properties.Resources.resources
     文件        1052  2012-06-06 03:20  键盘钩子\KeyHookTest\obj\x86\Debug\KeyHookTest.csproj.FileListAbsolute.txt
............此处省略17个文件信息

评论

共有 条评论