
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
	<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head><card id="MainCard" title="&#x6B22;&#x8FCE;&#x5149;&#x4E34;"><p><a href="wap.asp">&#x6728;&#x5B50;&#x5C4B;</a><br/>&nbsp;</p><p><b>&#x6807;&#x9898;&#x3A;</b> &#x43;&#x23;&#x952E;&#x76D8;&#x6309;&#x952E;&#x76D1;&#x89C6;</p><p><b>&#x4F5C;&#x8005;&#x3A;</b> &#x64;&#x6E;&#x61;&#x77;&#x6F;</p><p><b>&#x65E5;&#x671F;&#x3A;</b> &#x32;&#x30;&#x30;&#x39;&#x2D;&#x30;&#x38;&#x2D;&#x32;&#x38;&#x20;&#x30;&#x36;&#x3A;&#x34;&#x31;&#x20;&#x50;&#x4D;</p><p><b>&#x5206;&#x7C7B;&#x3A;</b> <a href="wap.asp?do=showLog&amp;cateID=16">&#x57;&#x69;&#x6E;&#x7F16;&#x7A0B;</a></p><p><b>&#x5185;&#x5BB9;&#x3A;</b> InterceptKeys.cs&#xFF1A;<br/>&#x590D;&#x5236;&#x5185;&#x5BB9;&#x5230;&#x526A;&#x8D34;&#x677F; &#x7A0B;&#x5E8F;&#x4EE3;&#x7801;using System;<br/>using System.Diagnostics;<br/>using System.IO;<br/>using System.Runtime.InteropServices;<br/>using System.Windows.Forms;<br/>namespace WindowsFormsApplication1<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &#x83B7;&#x53D6;&#x952E;&#x76D8;&#x6309;&#x952E;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;public class InterceptKeys<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private const int WH_KEYBOARD_LL = 13; //&#x5168;&#x5C40;&#x952E;&#x76D8;&#x94A9;&#x5B50;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private const int WM_KEYDOWN = 0x0100; //&#x952E;&#x76D8;&#x6309;&#x4E0B;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//private const int WM_KEYUP = 0x0101; //&#x952E;&#x76D8;&#x62AC;&#x8D77;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private static LowLevelKeyboardProc _proc = HookCallback;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private static IntPtr _hookID = IntPtr.Zero;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#region &#x8C03;&#x7528;API<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &#x5B89;&#x88C5;&#x94A9;&#x5B50;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;param name=&#34;idHook&#34;&gt;&#x94A9;&#x5B50;&#x7C7B;&#x578B;&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;param name=&#34;lpfn&#34;&gt;&#x51FD;&#x6570;&#x6307;&#x9488;&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;param name=&#34;hMod&#34;&gt;&#x5305;&#x542B;&#x94A9;&#x5B50;&#x51FD;&#x6570;&#x7684;&#x6A21;&#x5757;(EXE&#x3001;DLL)&#x53E5;&#x67C4;; &#x4E00;&#x822C;&#x662F; HInstance; &#x5982;&#x679C;&#x662F;&#x5F53;&#x524D;&#x7EBF;&#x7A0B;&#x8FD9;&#x91CC;&#x53EF;&#x4EE5;&#x662F; 0&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;param name=&#34;dwThreadId&#34;&gt;&#x5173;&#x8054;&#x7684;&#x7EBF;&#x7A0B;; &#x53EF;&#x7528; GetCurrentThreadId &#x83B7;&#x53D6;&#x5F53;&#x524D;&#x7EBF;&#x7A0B;; 0 &#x8868;&#x793A;&#x662F;&#x7CFB;&#x7EDF;&#x7EA7;&#x94A9;&#x5B50;&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;returns&gt;&#x8FD4;&#x56DE;&#x94A9;&#x5B50;&#x7684;&#x53E5;&#x67C4;; 0 &#x8868;&#x793A;&#x5931;&#x8D25;&lt;/returns&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[DllImport(&#34;user32.dll&#34;, CharSet = CharSet.Auto, SetLastError = true)]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private static extern IntPtr SetWindowsHookEx(int idHook, LowLevelKeyboardProc lpfn, IntPtr hMod, uint dwThreadId);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&#x94A9;&#x5B50;&#x7C7B;&#x578B; idHook &#x9009;&#x9879;:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//WH_MSGFILTER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = -1; {&#x7EBF;&#x7A0B;&#x7EA7;; &#x622A;&#x83B7;&#x7528;&#x6237;&#x4E0E;&#x63A7;&#x4EF6;&#x4EA4;&#x4E92;&#x7684;&#x6D88;&#x606F;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//WH_JOURNALRECORD&nbsp;&nbsp; = 0;&nbsp;&nbsp;{&#x7CFB;&#x7EDF;&#x7EA7;; &#x8BB0;&#x5F55;&#x6240;&#x6709;&#x6D88;&#x606F;&#x961F;&#x5217;&#x4ECE;&#x6D88;&#x606F;&#x961F;&#x5217;&#x9001;&#x51FA;&#x7684;&#x8F93;&#x5165;&#x6D88;&#x606F;, &#x5728;&#x6D88;&#x606F;&#x4ECE;&#x961F;&#x5217;&#x4E2D;&#x6E05;&#x9664;&#x65F6;&#x53D1;&#x751F;; &#x53EF;&#x7528;&#x4E8E;&#x5B8F;&#x8BB0;&#x5F55;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//WH_JOURNALPLAYBACK = 1;&nbsp;&nbsp;{&#x7CFB;&#x7EDF;&#x7EA7;; &#x56DE;&#x653E;&#x7531; WH_JOURNALRECORD &#x8BB0;&#x5F55;&#x7684;&#x6D88;&#x606F;, &#x4E5F;&#x5C31;&#x662F;&#x5C06;&#x8FD9;&#x4E9B;&#x6D88;&#x606F;&#x91CD;&#x65B0;&#x9001;&#x5165;&#x6D88;&#x606F;&#x961F;&#x5217;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//WH_KEYBOARD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 2;&nbsp;&nbsp;{&#x7CFB;&#x7EDF;&#x7EA7;&#x6216;&#x7EBF;&#x7A0B;&#x7EA7;; &#x622A;&#x83B7;&#x952E;&#x76D8;&#x6D88;&#x606F;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//WH_GETMESSAGE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 3;&nbsp;&nbsp;{&#x7CFB;&#x7EDF;&#x7EA7;&#x6216;&#x7EBF;&#x7A0B;&#x7EA7;; &#x622A;&#x83B7;&#x4ECE;&#x6D88;&#x606F;&#x961F;&#x5217;&#x9001;&#x51FA;&#x7684;&#x6D88;&#x606F;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//WH_CALLWNDPROC&nbsp;&nbsp;&nbsp;&nbsp; = 4;&nbsp;&nbsp;{&#x7CFB;&#x7EDF;&#x7EA7;&#x6216;&#x7EBF;&#x7A0B;&#x7EA7;; &#x622A;&#x83B7;&#x53D1;&#x9001;&#x5230;&#x76EE;&#x6807;&#x7A97;&#x53E3;&#x7684;&#x6D88;&#x606F;, &#x5728; SendMessage &#x8C03;&#x7528;&#x65F6;&#x53D1;&#x751F;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//WH_CBT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 5;&nbsp;&nbsp;{&#x7CFB;&#x7EDF;&#x7EA7;&#x6216;&#x7EBF;&#x7A0B;&#x7EA7;; &#x622A;&#x83B7;&#x7CFB;&#x7EDF;&#x57FA;&#x672C;&#x6D88;&#x606F;, &#x8B6C;&#x5982;: &#x7A97;&#x53E3;&#x7684;&#x521B;&#x5EFA;&#x3001;&#x6FC0;&#x6D3B;&#x3001;&#x5173;&#x95ED;&#x3001;&#x6700;&#x5927;&#x6700;&#x5C0F;&#x5316;&#x3001;&#x79FB;&#x52A8;&#x7B49;&#x7B49;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//WH_SYSMSGFILTER&nbsp;&nbsp;&nbsp;&nbsp;= 6;&nbsp;&nbsp;{&#x7CFB;&#x7EDF;&#x7EA7;; &#x622A;&#x83B7;&#x7CFB;&#x7EDF;&#x8303;&#x56F4;&#x5185;&#x7528;&#x6237;&#x4E0E;&#x63A7;&#x4EF6;&#x4EA4;&#x4E92;&#x7684;&#x6D88;&#x606F;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//WH_MOUSE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 7;&nbsp;&nbsp;{&#x7CFB;&#x7EDF;&#x7EA7;&#x6216;&#x7EBF;&#x7A0B;&#x7EA7;; &#x622A;&#x83B7;&#x9F20;&#x6807;&#x6D88;&#x606F;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//WH_HARDWARE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 8;&nbsp;&nbsp;{&#x7CFB;&#x7EDF;&#x7EA7;&#x6216;&#x7EBF;&#x7A0B;&#x7EA7;; &#x622A;&#x83B7;&#x975E;&#x6807;&#x51C6;&#x786C;&#x4EF6;(&#x975E;&#x9F20;&#x6807;&#x3001;&#x952E;&#x76D8;)&#x7684;&#x6D88;&#x606F;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//WH_DEBUG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 9;&nbsp;&nbsp;{&#x7CFB;&#x7EDF;&#x7EA7;&#x6216;&#x7EBF;&#x7A0B;&#x7EA7;; &#x5728;&#x5176;&#x4ED6;&#x94A9;&#x5B50;&#x8C03;&#x7528;&#x524D;&#x8C03;&#x7528;, &#x7528;&#x4E8E;&#x8C03;&#x8BD5;&#x94A9;&#x5B50;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//WH_SHELL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 10; {&#x7CFB;&#x7EDF;&#x7EA7;&#x6216;&#x7EBF;&#x7A0B;&#x7EA7;; &#x622A;&#x83B7;&#x53D1;&#x5411;&#x5916;&#x58F3;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x7684;&#x6D88;&#x606F;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//WH_FOREGROUNDIDLE&nbsp;&nbsp;= 11; {&#x7CFB;&#x7EDF;&#x7EA7;&#x6216;&#x7EBF;&#x7A0B;&#x7EA7;; &#x5728;&#x7A0B;&#x5E8F;&#x524D;&#x53F0;&#x7EBF;&#x7A0B;&#x7A7A;&#x95F2;&#x65F6;&#x8C03;&#x7528;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//WH_CALLWNDPROCRET&nbsp;&nbsp;= 12; {&#x7CFB;&#x7EDF;&#x7EA7;&#x6216;&#x7EBF;&#x7A0B;&#x7EA7;; &#x622A;&#x83B7;&#x76EE;&#x6807;&#x7A97;&#x53E3;&#x5904;&#x7406;&#x5B8C;&#x6BD5;&#x7684;&#x6D88;&#x606F;, &#x5728; SendMessage &#x8C03;&#x7528;&#x540E;&#x53D1;&#x751F;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//WH_KEYBOARD_LL&nbsp;&nbsp;&nbsp;&nbsp; = 13; {&#x7CFB;&#x7EDF;&#x7EA7;; &#x622A;&#x83B7;&#x4F4E;&#x7EA7;&#x952E;&#x76D8;&#x6D88;&#x606F;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//WH_MOUSE_LL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 14; {&#x7CFB;&#x7EDF;&#x7EA7;; &#x622A;&#x83B7;&#x4F4E;&#x7EA7;&#x9F20;&#x6807;&#x6D88;&#x606F;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &#x5378;&#x8F7D;&#x94A9;&#x5B50;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;param name=&#34;hhk&#34;&gt;&#x94A9;&#x5B50;&#x7684;&#x53E5;&#x67C4;&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;returns&gt;&lt;/returns&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[DllImport(&#34;user32.dll&#34;, CharSet = CharSet.Auto, SetLastError = true)]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[return: MarshalAs(UnmanagedType.Bool)]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private static extern bool UnhookWindowsHookEx(IntPtr hhk);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[DllImport(&#34;user32.dll&#34;, CharSet = CharSet.Auto, SetLastError = true)]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[DllImport(&#34;kernel32.dll&#34;, CharSet = CharSet.Auto, SetLastError = true)]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private static extern IntPtr GetModuleHandle(string lpModuleName);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#endregion<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &#x5B89;&#x88C5;&#x94A9;&#x5B50;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public static void SetHook()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;using (Process curProcess = Process.GetCurrentProcess())<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;using (ProcessModule curModule = curProcess.MainModule)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_hookID = SetWindowsHookEx(WH_KEYBOARD_LL, _proc, GetModuleHandle(curModule.ModuleName), 0);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &#x5904;&#x7406;&#x51FD;&#x6570;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;param name=&#34;nCode&#34;&gt;&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;param name=&#34;wParam&#34;&gt;&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;param name=&#34;lParam&#34;&gt;&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;returns&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &#x5982;&#x679C;&#x8FD4;&#x56DE;1&#xFF0C;&#x5219;&#x7ED3;&#x675F;&#x6D88;&#x606F;&#xFF0C;&#x8FD9;&#x4E2A;&#x6D88;&#x606F;&#x5230;&#x6B64;&#x4E3A;&#x6B62;&#xFF0C;&#x4E0D;&#x518D;&#x4F20;&#x9012;&#xFF1B;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &#x5982;&#x679C;&#x8FD4;&#x56DE;0&#x6216;&#x8C03;&#x7528;CallNextHookEx&#x51FD;&#x6570;&#x5219;&#x6D88;&#x606F;&#x51FA;&#x4E86;&#x8FD9;&#x4E2A;&#x94A9;&#x5B50;&#x7EE7;&#x7EED;&#x5F80;&#x4E0B;&#x4F20;&#x9012;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x4F20;&#x7ED9;&#x6D88;&#x606F;&#x771F;&#x6B63;&#x7684;&#x63A5;&#x53D7;&#x8005;&#xFF1B;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;/returns&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&#x952E;&#x76D8;&#x6309;&#x4E0B;&#x65F6;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (nCode &gt;= 0 &amp;&amp; wParam == (IntPtr)WM_KEYDOWN)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int vkCode = Marshal.ReadInt32(lParam);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Keys key = (Keys)vkCode;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&#x8BB0;&#x5F55;&#x5230;&#x65E5;&#x5FD7;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File.AppendAllText(@&#34;C:\hot.txt&#34;, DateTime.Now.ToString(&#34;HH:mm:ss&#34;) + &#34;: &#34; + key.ToString() + &#34;\r\n&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return CallNextHookEx(_hookID, nCode, wParam, lParam);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &#x5378;&#x8F7D;&#x94A9;&#x5B50;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public static void UnHook()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (_hookID != IntPtr.Zero)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UnhookWindowsHookEx(_hookID);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}<br/>&#x76D1;&#x89C6;&#x793A;&#x4F8B;&#xFF1A;<br/>&#x590D;&#x5236;&#x5185;&#x5BB9;&#x5230;&#x526A;&#x8D34;&#x677F; &#x7A0B;&#x5E8F;&#x4EE3;&#x7801;using System;<br/>using System.Windows.Forms;<br/>namespace WindowsFormsApplication1<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;public partial class Form1 : Form<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public Form1()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InitializeComponent();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private void button1_Click(object sender, EventArgs e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InterceptKeys.SetHook();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private void Form1_FormClosing(object sender, FormClosingEventArgs e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InterceptKeys.UnHook();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}<br/>&#x53C2;&#x8003;&#x8D44;&#x6599;<br/>[1].C# &#x952E;&#x76D8;&#x76D1;&#x89C6;+&#x526A;&#x5207;&#x677F;&#x7F16;&#x7A0B;&#xFF1A;http://www.cnblogs.com/over140/archive/2007/11/05/934452.html<br/>[2].&#x770B;&#x770B;C# Hook &#x5982;&#x4F55;&#x5B9E;&#x73B0;&#xFF1A;http://developer.51cto.com/art/200908/147057.htm<br/>[3].&#x5982;&#x4F55;&#x5728;C#&#x4E2D;&#x4F7F;&#x7528;&#x5168;&#x5C40;&#x9F20;&#x6807;&#x3001;&#x952E;&#x76D8;Hook&#xFF1A;http://www.cnblogs.com/michaelxu/archive/2006/09/22/511557.html<br/>[4].SetWindowsHookEx&#xFF1A;http://msdn.microsoft.com/zh-cn/library/ms644990(v=vs.85).aspx</p><p> + <a href="#CommentCard">&#x67E5;&#x770B;&#x5F53;&#x524D;&#x65E5;&#x5FD7;&#x8BC4;&#x8BBA;</a> (0)</p><p>&nbsp;<br/><br/><a href="wap.asp?do=Login">&#x767B;&#x5F55;</a></p><p><br/>&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;</p><p><a href="wap.asp">&#x6728;&#x5B50;&#x5C4B;</a></p><p><a href="http://www.pjhome.net/wap.asp">PJBlog3&nbsp;v3.2.9.518</a>&nbsp;Inside.</p><p>Processed&nbsp;In&nbsp;0.063&nbsp;ms</p><do type="prev" label="&#x8FD4;&#x56DE;"><prev/></do></card><card id="postCommentCard"><p><b>&#x6807;&#x9898;&#x3A;</b> <a href="#MainCard">&#x43;&#x23;&#x952E;&#x76D8;&#x6309;&#x952E;&#x76D1;&#x89C6;</a></p><p><br/>你没有权限发表评论</p><p><br/>&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;</p><p><a href="wap.asp">&#x6728;&#x5B50;&#x5C4B;</a></p><p><a href="http://www.pjhome.net/wap.asp">PJBlog3&nbsp;v3.2.9.518</a>&nbsp;Inside.</p><p>Processed&nbsp;In&nbsp;0.063&nbsp;ms</p><do type="prev" label="&#x8FD4;&#x56DE;"><prev/></do></card><card id="CommentCard"><p>&#x6682;&#x65E0;&#x8BC4;&#x8BBA;</p><p><a href="#MainCard">&#x8FD4;&#x56DE;</a></p><p><br/>&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;</p><p><a href="wap.asp">&#x6728;&#x5B50;&#x5C4B;</a></p><p><a href="http://www.pjhome.net/wap.asp">PJBlog3&nbsp;v3.2.9.518</a>&nbsp;Inside.</p><p>Processed&nbsp;In&nbsp;0.078&nbsp;ms</p><do type="prev" label="&#x8FD4;&#x56DE;"><prev/></do></card>
</wml>
