資源簡介
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個文件信息
評論
共有 條評論