tanghai 13 лет назад
Родитель
Сommit
4de8d46bac
4 измененных файлов с 221 добавлено и 211 удалено
  1. 18 0
      CSharp/CSharp.sln
  2. BIN
      CSharp/Lib/detours.lib
  3. BIN
      CSharp/Lib/enet.lib
  4. 203 211
      CSharp/Platform/Interop/Hooks.cs

+ 18 - 0
CSharp/CSharp.sln

@@ -34,9 +34,11 @@ Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
 		Debug|Mixed Platforms = Debug|Mixed Platforms
+		Debug|Win32 = Debug|Win32
 		Debug|x86 = Debug|x86
 		Release|Any CPU = Release|Any CPU
 		Release|Mixed Platforms = Release|Mixed Platforms
+		Release|Win32 = Release|Win32
 		Release|x86 = Release|x86
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
@@ -44,71 +46,87 @@ Global
 		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Debug|Win32.ActiveCfg = Debug|Any CPU
 		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Release|Any CPU.Build.0 = Release|Any CPU
 		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Release|Win32.ActiveCfg = Release|Any CPU
 		{48A2E149-0DAC-41B4-BB54-DFBCCD6D42B3}.Release|x86.ActiveCfg = Release|Any CPU
 		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Debug|Win32.ActiveCfg = Debug|Any CPU
 		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Release|Any CPU.Build.0 = Release|Any CPU
 		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Release|Win32.ActiveCfg = Release|Any CPU
 		{6CD185D1-08E0-4729-A999-2D5B57BA8193}.Release|x86.ActiveCfg = Release|Any CPU
 		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Debug|Any CPU.ActiveCfg = Debug|x86
 		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
 		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Debug|Mixed Platforms.Build.0 = Debug|x86
+		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Debug|Win32.ActiveCfg = Debug|x86
+		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Debug|Win32.Build.0 = Debug|x86
 		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Debug|x86.ActiveCfg = Debug|x86
 		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Debug|x86.Build.0 = Debug|x86
 		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Release|Any CPU.ActiveCfg = Release|x86
 		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Release|Mixed Platforms.ActiveCfg = Release|x86
 		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Release|Mixed Platforms.Build.0 = Release|x86
+		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Release|Win32.ActiveCfg = Release|x86
+		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Release|Win32.Build.0 = Release|x86
 		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Release|x86.ActiveCfg = Release|x86
 		{C46F3337-0F48-4A72-84AD-8FDD1F159BB0}.Release|x86.Build.0 = Release|x86
 		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Debug|Win32.ActiveCfg = Debug|Any CPU
 		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Release|Any CPU.Build.0 = Release|Any CPU
 		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Release|Win32.ActiveCfg = Release|Any CPU
 		{D0B4CFAC-A368-4742-9863-68776CFA9938}.Release|x86.ActiveCfg = Release|Any CPU
 		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Debug|Win32.ActiveCfg = Debug|Any CPU
 		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Release|Any CPU.Build.0 = Release|Any CPU
 		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Release|Win32.ActiveCfg = Release|Any CPU
 		{5D6ECBCD-BE14-4DCB-BAEC-57089748B164}.Release|x86.ActiveCfg = Release|Any CPU
 		{72E16572-FC1F-4A9E-BC96-035417239298}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{72E16572-FC1F-4A9E-BC96-035417239298}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{72E16572-FC1F-4A9E-BC96-035417239298}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 		{72E16572-FC1F-4A9E-BC96-035417239298}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{72E16572-FC1F-4A9E-BC96-035417239298}.Debug|Win32.ActiveCfg = Debug|Any CPU
 		{72E16572-FC1F-4A9E-BC96-035417239298}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{72E16572-FC1F-4A9E-BC96-035417239298}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{72E16572-FC1F-4A9E-BC96-035417239298}.Release|Any CPU.Build.0 = Release|Any CPU
 		{72E16572-FC1F-4A9E-BC96-035417239298}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 		{72E16572-FC1F-4A9E-BC96-035417239298}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{72E16572-FC1F-4A9E-BC96-035417239298}.Release|Win32.ActiveCfg = Release|Any CPU
 		{72E16572-FC1F-4A9E-BC96-035417239298}.Release|x86.ActiveCfg = Release|Any CPU
 		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Debug|Win32.ActiveCfg = Debug|Any CPU
 		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Debug|x86.ActiveCfg = Debug|Any CPU
 		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Release|Any CPU.Build.0 = Release|Any CPU
 		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Release|Win32.ActiveCfg = Release|Any CPU
 		{3A98B35C-DEA8-489C-9203-263FFB6B065D}.Release|x86.ActiveCfg = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution

BIN
CSharp/Lib/detours.lib


BIN
CSharp/Lib/enet.lib


+ 203 - 211
CSharp/Platform/Interop/Hooks.cs

@@ -27,79 +27,79 @@ namespace Interop
 	};
 
 
-	public enum WMsG : int
+	public enum WMsG
 	{
-		WM_NULL = 0x0000,
-		WM_CREATE = 0x0001,
-		WM_DESTROY = 0x0002,
-		WM_MOVE = 0x0003,
-		WM_SIZE = 0x0005,
-		WM_ACTIVATE = 0x0006,
-		WA_INACTIVE = 0,
-		WA_ACTIVE = 1,
-		WA_CLICKACTIVE = 2,
-
-		WM_SETFOCUS = 0x0007,
-		WM_KILLFOCUS = 0x0008,
-		WM_ENABLE = 0x000A,
-		WM_SETREDRAW = 0x000B,
-		WM_SETTEXT = 0x000C,
-		WM_GETTEXT = 0x000D,
-		WM_GETTEXTLENGTH = 0x000E,
-		WM_PAINT = 0x000F,
-		WM_CLOSE = 0x0010,
+		WM_NULL            = 0x0000,
+		WM_CREATE          = 0x0001,
+		WM_DESTROY         = 0x0002,
+		WM_MOVE            = 0x0003,
+		WM_SIZE            = 0x0005,
+		WM_ACTIVATE        = 0x0006,
+		WA_INACTIVE        = 0,
+		WA_ACTIVE          = 1,
+		WA_CLICKACTIVE     = 2,
+
+		WM_SETFOCUS        = 0x0007,
+		WM_KILLFOCUS       = 0x0008,
+		WM_ENABLE          = 0x000A,
+		WM_SETREDRAW       = 0x000B,
+		WM_SETTEXT         = 0x000C,
+		WM_GETTEXT         = 0x000D,
+		WM_GETTEXTLENGTH   = 0x000E,
+		WM_PAINT           = 0x000F,
+		WM_CLOSE           = 0x0010,
 
 		WM_QUERYENDSESSION = 0x0011,
-		WM_QUERYOPEN = 0x0013,
-		WM_ENDSESSION = 0x0016,
-		WM_QUIT = 0x0012,
-		WM_ERASEBKGND = 0x0014,
-		WM_SYSCOLORCHANGE = 0x0015,
-		WM_SHOWWINDOW = 0x0018,
-		WM_WININICHANGE = 0x001A,
-		WM_DEVMODECHANGE = 0x001B,
-		WM_ACTIVATEAPP = 0x001C,
-		WM_FONTCHANGE = 0x001D,
-		WM_TIMECHANGE = 0x001E,
-		WM_CANCELMODE = 0x001F,
-		WM_SETCURSOR = 0x0020,
-		WM_MOUSEACTIVATE = 0x0021,
-		WM_CHILDACTIVATE = 0x0022,
-		WM_QUEUESYNC = 0x0023,
-		WM_GETMINMAXINFO = 0x0024,
-
-		WM_KEYFIRST = 0x0100,
-		WM_KEYDOWN = 0x0100,
-		WM_KEYUP = 0x0101,
-		WM_CHAR = 0x0102,
-		WM_DEADCHAR = 0x0103,
-		WM_SYSKEYDOWN = 0x0104,
-		WM_SYSKEYUP = 0x0105,
-		WM_SYSCHAR = 0x0106,
-		WM_SYSDEADCHAR = 0x0107,
-
-		WM_MOUSEFIRST = 0x0200,
-		WM_MOUSEMOVE = 0x0200,
+		WM_QUERYOPEN       = 0x0013,
+		WM_ENDSESSION      = 0x0016,
+		WM_QUIT            = 0x0012,
+		WM_ERASEBKGND      = 0x0014,
+		WM_SYSCOLORCHANGE  = 0x0015,
+		WM_SHOWWINDOW      = 0x0018,
+		WM_WININICHANGE    = 0x001A,
+		WM_DEVMODECHANGE   = 0x001B,
+		WM_ACTIVATEAPP     = 0x001C,
+		WM_FONTCHANGE      = 0x001D,
+		WM_TIMECHANGE      = 0x001E,
+		WM_CANCELMODE      = 0x001F,
+		WM_SETCURSOR       = 0x0020,
+		WM_MOUSEACTIVATE   = 0x0021,
+		WM_CHILDACTIVATE   = 0x0022,
+		WM_QUEUESYNC       = 0x0023,
+		WM_GETMINMAXINFO   = 0x0024,
+
+		WM_KEYFIRST        = 0x0100,
+		WM_KEYDOWN         = 0x0100,
+		WM_KEYUP           = 0x0101,
+		WM_CHAR            = 0x0102,
+		WM_DEADCHAR        = 0x0103,
+		WM_SYSKEYDOWN      = 0x0104,
+		WM_SYSKEYUP        = 0x0105,
+		WM_SYSCHAR         = 0x0106,
+		WM_SYSDEADCHAR     = 0x0107,
+
+		WM_MOUSEFIRST      = 0x0200,
+		WM_MOUSEMOVE       = 0x0200,
 		// 移动鼠标
-		WM_LBUTTONDOWN = 0x0201,
+		WM_LBUTTONDOWN     = 0x0201,
 		//按下鼠标左键
-		WM_LBUTTONUP = 0x0202,
+		WM_LBUTTONUP       = 0x0202,
 		//释放鼠标左键
-		WM_LBUTTONDBLCLK = 0x0203,
+		WM_LBUTTONDBLCLK   = 0x0203,
 		//双击鼠标左键
-		WM_RBUTTONDOWN = 0x0204,
+		WM_RBUTTONDOWN     = 0x0204,
 		//按下鼠标右键
-		WM_RBUTTONUP = 0x0205,
+		WM_RBUTTONUP       = 0x0205,
 		//释放鼠标右键
-		WM_RBUTTONDBLCLK = 0x0206,
+		WM_RBUTTONDBLCLK   = 0x0206,
 		//双击鼠标右键
-		WM_MBUTTONDOWN = 0x0207,
+		WM_MBUTTONDOWN     = 0x0207,
 		//按下鼠标中键 
-		WM_MBUTTONUP = 0x0208,
+		WM_MBUTTONUP       = 0x0208,
 		//释放鼠标中键
-		WM_MBUTTONDBLCLK = 0x0209,
+		WM_MBUTTONDBLCLK   = 0x0209,
 		//双击鼠标中键
-		WM_MOUSEWHEEL = 0x020A,
+		WM_MOUSEWHEEL      = 0x020A,
 	}
 
 	/// <summary>
@@ -125,124 +125,124 @@ namespace Interop
 	/// </summary>
 	public enum VirtualKeys : byte
 	{
-		//VK_NUMLOCK = 0x90, //数字锁定键
-		//VK_SCROLL = 0x91,  //滚动锁定
-		//VK_CAPITAL = 0x14, //大小写锁定
-		//VK_A = 62,         //键盘A
-		VK_LBUTTON = 1,      //鼠标左键 
-		VK_RBUTTON = 2,     //鼠标右键 
-		VK_CANCEL = 3,    //Ctrl+Break(通常不需要处理) 
-		VK_MBUTTON = 4,    //鼠标中键 
-		VK_BACK = 8,      //Backspace 
-		VK_TAB = 9,      //Tab 
-		VK_CLEAR = 12,    //Num Lock关闭时的数字键盘5 
-		VK_RETURN = 13,   //Enter(或者另一个) 
-		VK_SHIFT = 16,    //Shift(或者另一个) 
-		VK_CONTROL = 17,   //Ctrl(或者另一个) 
-		VK_MENU = 18,    //Alt(或者另一个) 
-		VK_PAUSE = 19,    //Pause 
-		VK_CAPITAL = 20,   //Caps Lock 
-		VK_ESCAPE = 27,   //Esc 
-		VK_SPACE = 32,    //Spacebar 
-		VK_PRIOR = 33,    //Page Up 
-		VK_NEXT = 34,    //Page Down 
-		VK_END = 35,     //End 
-		VK_HOME = 36,    //Home 
-		VK_LEFT = 37,     //左箭头 
-		VK_UP = 38,      //上箭头 
-		VK_RIGHT = 39,    //右箭头 
-		VK_DOWN = 40,     //下箭头 
-		VK_SELECT = 41,    //可选 
-		VK_PRINT = 42,    //可选 
-		VK_EXECUTE = 43,   //可选 
-		VK_SNAPSHOT = 44,  //Print Screen 
-		VK_INSERT = 45,   //Insert 
-		VK_DELETE = 46,    //Delete 
-		VK_HELP = 47,      //可选 
-		VK_NUM0 = 48,        //0
-		VK_NUM1 = 49,        //1
-		VK_NUM2 = 50,        //2
-		VK_NUM3 = 51,        //3
-		VK_NUM4 = 52,        //4
-		VK_NUM5 = 53,        //5
-		VK_NUM6 = 54,        //6
-		VK_NUM7 = 55,        //7
-		VK_NUM8 = 56,        //8
-		VK_NUM9 = 57,        //9
-		VK_A = 65,           //A
-		VK_B = 66,           //B
-		VK_C = 67,           //C
-		VK_D = 68,           //D
-		VK_E = 69,           //E
-		VK_F = 70,           //F
-		VK_G = 71,           //G
-		VK_H = 72,           //H
-		VK_I = 73,           //I
-		VK_J = 74,           //J
-		VK_K = 75,           //K
-		VK_L = 76,           //L
-		VK_M = 77,           //M
-		VK_N = 78,           //N
-		VK_O = 79,           //O
-		VK_P = 80,           //P
-		VK_Q = 81,           //Q
-		VK_R = 82,           //R
-		VK_S = 83,           //S
-		VK_T = 84,           //T
-		VK_U = 85,           //U
-		VK_V = 86,           //V
-		VK_W = 87,           //W
-		VK_X = 88,           //X
-		VK_Y = 89,           //Y
-		VK_Z = 90,           //Z
-		VK_NUMPAD0 = 96,     //0
-		VK_NUMPAD1 = 97,     //1
-		VK_NUMPAD2 = 98,     //2
-		VK_NUMPAD3 = 99,     //3
-		VK_NUMPAD4 = 100,    //4
-		VK_NUMPAD5 = 101,    //5
-		VK_NUMPAD6 = 102,    //6
-		VK_NUMPAD7 = 103,    //7
-		VK_NUMPAD8 = 104,    //8
-		VK_NUMPAD9 = 105,    //9
-		VK_NULTIPLY = 106,  //数字键盘上的* 
-		VK_ADD = 107,    //数字键盘上的+ 
-		VK_SEPARATOR = 108, //可选 
-		VK_SUBTRACT = 109,  //数字键盘上的- 
-		VK_DECIMAL = 110,  //数字键盘上的. 
-		VK_DIVIDE = 111,   //数字键盘上的/
-		VK_F1 = 112,
-		VK_F2 = 113,
-		VK_F3 = 114,
-		VK_F4 = 115,
-		VK_F5 = 116,
-		VK_F6 = 117,
-		VK_F7 = 118,
-		VK_F8 = 119,
-		VK_F9 = 120,
-		VK_F10 = 121,
-		VK_F11 = 122,
-		VK_F12 = 123,
-		VK_NUMLOCK = 144,  //Num Lock 
-		VK_SCROLL = 145     // Scroll Lock 
+		// VK_NUMLOCK    = 0x90, // 数字锁定键
+		// VK_SCROLL     = 0x91, // 滚动锁定
+		// VK_CAPITAL    = 0x14, // 大小写锁定
+		// VK_A          = 62,   // 键盘A
+		VK_LBUTTON     = 1,    // 鼠标左键 
+		VK_RBUTTON     = 2,    // 鼠标右键 
+		VK_CANCEL      = 3,    // Ctrl+Break(通常不需要处理) 
+		VK_MBUTTON     = 4,    // 鼠标中键 
+		VK_BACK        = 8,    // Backspace 
+		VK_TAB         = 9,    // Tab 
+		VK_CLEAR       = 12,   // Num Lock关闭时的数字键盘5 
+		VK_RETURN      = 13,   // Enter(或者另一个) 
+		VK_SHIFT       = 16,   // Shift(或者另一个) 
+		VK_CONTROL     = 17,   // Ctrl(或者另一个) 
+		VK_MENU        = 18,   // Alt(或者另一个) 
+		VK_PAUSE       = 19,   // Pause 
+		VK_CAPITAL     = 20,   // Caps Lock 
+		VK_ESCAPE      = 27,   // Esc 
+		VK_SPACE       = 32,   // Spacebar 
+		VK_PRIOR       = 33,   // Page Up 
+		VK_NEXT        = 34,   // Page Down 
+		VK_END         = 35,   // End 
+		VK_HOME        = 36,   // Home 
+		VK_LEFT        = 37,   // 左箭头 
+		VK_UP          = 38,   // 上箭头 
+		VK_RIGHT       = 39,   // 右箭头 
+		VK_DOWN        = 40,   // 下箭头 
+		VK_SELECT      = 41,   // 可选 
+		VK_PRINT       = 42,   // 可选 
+		VK_EXECUTE     = 43,   // 可选 
+		VK_SNAPSHOT    = 44,   // Print Screen 
+		VK_INSERT      = 45,   // Insert 
+		VK_DELETE      = 46,   // Delete 
+		VK_HELP        = 47,   // 可选 
+		VK_NUM0        = 48,   // 0
+		VK_NUM1        = 49,   // 1
+		VK_NUM2        = 50,   // 2
+		VK_NUM3        = 51,   // 3
+		VK_NUM4        = 52,   // 4
+		VK_NUM5        = 53,   // 5
+		VK_NUM6        = 54,   // 6
+		VK_NUM7        = 55,   // 7
+		VK_NUM8        = 56,   // 8
+		VK_NUM9        = 57,   // 9
+		VK_A           = 65,   // A
+		VK_B           = 66,   // B
+		VK_C           = 67,   // C
+		VK_D           = 68,   // D
+		VK_E           = 69,   // E
+		VK_F           = 70,   // F
+		VK_G           = 71,   // G
+		VK_H           = 72,   // H
+		VK_I           = 73,   // I
+		VK_J           = 74,   // J
+		VK_K           = 75,   // K
+		VK_L           = 76,   // L
+		VK_M           = 77,   // M
+		VK_N           = 78,   // N
+		VK_O           = 79,   // O
+		VK_P           = 80,   // P
+		VK_Q           = 81,   // Q
+		VK_R           = 82,   // R
+		VK_S           = 83,   // S
+		VK_T           = 84,   // T
+		VK_U           = 85,   // U
+		VK_V           = 86,   // V
+		VK_W           = 87,   // W
+		VK_X           = 88,   // X
+		VK_Y           = 89,   // Y
+		VK_Z           = 90,   // Z
+		VK_NUMPAD0     = 96,   // 0
+		VK_NUMPAD1     = 97,   // 1
+		VK_NUMPAD2     = 98,   // 2
+		VK_NUMPAD3     = 99,   // 3
+		VK_NUMPAD4     = 100,  // 4
+		VK_NUMPAD5     = 101,  // 5
+		VK_NUMPAD6     = 102,  // 6
+		VK_NUMPAD7     = 103,  // 7
+		VK_NUMPAD8     = 104,  // 8
+		VK_NUMPAD9     = 105,  // 9
+		VK_NULTIPLY    = 106,  // 数字键盘上的* 
+		VK_ADD         = 107,  // 数字键盘上的+ 
+		VK_SEPARATOR   = 108,  // 可选 
+		VK_SUBTRACT    = 109,  // 数字键盘上的- 
+		VK_DECIMAL     = 110,  // 数字键盘上的. 
+		VK_DIVIDE      = 111,  // 数字键盘上的/
+		VK_F1          = 112,
+		VK_F2          = 113,
+		VK_F3          = 114,
+		VK_F4          = 115,
+		VK_F5          = 116,
+		VK_F6          = 117,
+		VK_F7          = 118,
+		VK_F8          = 119,
+		VK_F9          = 120,
+		VK_F10         = 121,
+		VK_F11         = 122,
+		VK_F12         = 123,
+		VK_NUMLOCK     = 144,  // Num Lock 
+		VK_SCROLL      = 145   // Scroll Lock 
 	}
 
 	public enum NCmdShow : uint
 	{
-		SW_FORCEMINIMIZE = 0x0,
-		SW_HIDE = 0x1,
-		SW_MAXIMIZE = 0x2,
-		SW_MINIMIZE = 0x3,
-		SW_RESTORE = 0x4,
-		SW_SHOW = 0x5,
-		SW_SHOWDEFAULT = 0x6,
-		SW_SHOWMAXIMIZED = 0x7,
-		SW_SHOWMINIMIZED = 0x8,
-		SW_SHOWMINNOACTIVE = 0x9,
-		SW_SHOWNA = 0xA,
-		SW_SHOWNOACTIVATE = 0xB,
-		SW_SHOWNORMAL = 0xC,
-		WM_CLOSE = 0x10,
+		SW_FORCEMINIMIZE      = 0x0,
+		SW_HIDE               = 0x1,
+		SW_MAXIMIZE           = 0x2,
+		SW_MINIMIZE           = 0x3,
+		SW_RESTORE            = 0x4,
+		SW_SHOW               = 0x5,
+		SW_SHOWDEFAULT        = 0x6,
+		SW_SHOWMAXIMIZED      = 0x7,
+		SW_SHOWMINIMIZED      = 0x8,
+		SW_SHOWMINNOACTIVE    = 0x9,
+		SW_SHOWNA             = 0xA,
+		SW_SHOWNOACTIVATE     = 0xB,
+		SW_SHOWNORMAL         = 0xC,
+		WM_CLOSE              = 0x10,
 	}
 
 	[StructLayout(LayoutKind.Sequential)]
@@ -353,14 +353,8 @@ namespace Interop
 		//得到窗体句柄的函数,FindWindow函数用来返回符合指定的类名( ClassName )和窗口名( WindowTitle )的窗口句柄
 		[DllImport("user32.dll")]
 		public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
-		/// <summary>
-		/// 查找子窗口
-		/// </summary>
-		/// <param name="hWndFather">父窗口的句柄</param>
-		/// <param name="hWndPreChild">上一个兄弟窗口</param>
-		/// <param name="lpszClass">窗口类</param>
-		/// <param name="lpszWindows">窗口标题</param>
-		/// <returns>窗口的句柄(如果查找失败将返回0)</returns>
+
+		// 查找窗口
 		[DllImport("user32.dll", CharSet = CharSet.Auto)]
 		public static extern IntPtr FindWindowEx(IntPtr hWndFather, IntPtr hWndPreChild, string lpszClass, string lpszWindows);
 
@@ -376,7 +370,7 @@ namespace Interop
 		[DllImport("kernel32.dll")]
 		private static extern void CloseHandle(uint hObject);  //Handle to object
 
-		//读取进程内存的函数
+		// 读取进程内存的函数
 		[DllImport("kernel32.dll")]
 		static extern bool ReadProcessMemory(
 			uint hProcess, 
@@ -411,24 +405,23 @@ namespace Interop
 			int nSize,
 			uint lpNumberOfBytesRead
 		);
-		//********************************************************************************************
-		// public static extern bool ReadProcessMemory(int hProcess, int lpBaseAddress, out char lpBuffer, int nSize, int lpNumberOfBytesWritten);
-		//得到目标进程句柄的函数
+
+		// 得到目标进程句柄的函数
 		[DllImport("kernel32.dll")]
 		public static extern uint OpenProcess(uint dwDesiredAccess, bool bInheritHandle, int dwProcessId);
-		//鼠标事件声明
+		// 鼠标事件声明
 		[DllImport("user32.dll")]
 		static extern bool setcursorpos(int x, int y);
 		[DllImport("user32.dll")]
 		static extern void mouse_event(MouseEventFlag flags, int dx, int dy, uint data, UIntPtr extrainfo);
-		//键盘事件声明
+		// 键盘事件声明
 		[DllImport("user32.dll")]
 		static extern byte MapVirtualKey(byte wCode, int wMap);
 		[DllImport("user32.dll")]
 		static extern short GetKeyState(int nVirtKey);
 		[DllImport("user32.dll")]
 		static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);
-		//键盘事件声明winio
+		// 键盘事件声明winio
 		[DllImport("winio.dll")]
 		public static extern bool InitializeWinIo();
 		[DllImport("winio.dll")]
@@ -446,86 +439,85 @@ namespace Interop
 		[DllImport("winio.dll")]
 		public static extern void ShutdownWinIo();
 
-		//全局键盘钩子
-
-		//第一个参数:指定钩子的类型,有WH_MOUSE、WH_KEYBOARD等十多种(具体参见MSDN)
-		//第二个参数:标识钩子函数的入口地址
-		//第三个参数:钩子函数所在模块的句柄;
-		//第四个参数:钩子相关函数的ID用以指定想让钩子去钩哪个线程,为0时则拦截整个系统的消息。
-		//安装在钩子链表中的钩子子程
+		// 全局键盘钩子
+		// 第一个参数:指定钩子的类型,有WH_MOUSE、WH_KEYBOARD等十多种(具体参见MSDN)
+		// 第二个参数:标识钩子函数的入口地址
+		// 第三个参数:钩子函数所在模块的句柄;
+		// 第四个参数:钩子相关函数的ID用以指定想让钩子去钩哪个线程,为0时则拦截整个系统的消息。
+		// 安装在钩子链表中的钩子子程
 		[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
 		public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);
 
 		[DllImport("user32")]
 		private static extern int GetKeyboardState(byte[] pbKeyState);
 
-		//取得模块句柄 
+		// 取得模块句柄 
 		[DllImport("kernel32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
 		private static extern IntPtr GetModuleHandle(string lpModuleName);
 
-		//移除由SetWindowsHookEx方法安装在钩子链表中的钩子子程
+		// 移除由SetWindowsHookEx方法安装在钩子链表中的钩子子程
 		[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
 		public static extern bool UnhookWindowsHookEx(IntPtr hhook);
 
-		//对一个事件处理的hook可能有多个,它们成链状,使用CallNextHookEx一级一级地调用。简单解释过来就是“调用下一个HOOK”
+		// 对一个事件处理的hook可能有多个,它们成链状,使用CallNextHookEx一级一级地调用。简单解释过来就是“调用下一个HOOK”
 		[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
 		public static extern IntPtr CallNextHookEx(IntPtr hhook, int code, IntPtr wparam, IntPtr lparam);
 
-		//发送系统消息
+		// 发送系统消息
 		[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
 		public static extern bool PostMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
 
-		//发送系统消息
+		// 发送系统消息
 		[DllImport("user32.dll", CharSet = CharSet.Auto)]
 		public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);
 
 		[DllImport("user32.dll", CharSet = CharSet.Auto)]
 		public static extern int SendMessage(IntPtr hWnd, int msg, byte[] wParam, int lParam);
 
-		//函数功能描述:将一块内存的数据从一个位置复制到另一个位置
+		// 函数功能描述:将一块内存的数据从一个位置复制到另一个位置
 		[DllImport("Kernel32.dll", EntryPoint = "RtlMoveMemory")]
 		public static extern void CopyMemory(ref KbDllHook Source, IntPtr Destination, int Length);
 
-		//函数功能描述:将一块内存的数据从一个位置复制到另一个位置
+		// 函数功能描述:将一块内存的数据从一个位置复制到另一个位置
 		[DllImport("Kernel32.dll", EntryPoint = "RtlMoveMemory")]
 		public static extern void CopyMemory(KbDllHook Source, IntPtr Destination, int Length);
 
-		//取得当前线程编号的API
+		// 取得当前线程编号的API
 		[DllImport("kernel32.dll")]
 		static extern int GetCurrentThreadId();
 
 		//********************************************************************************************
-		//获取屏幕1024*768图像
+		// 获取屏幕1024*768图像
 		[DllImport("gdi32.dll")]
 		public static extern int BitBlt(IntPtr hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, UInt32 dwRop);
 
-		//创建桌面句柄
+		// 创建桌面句柄
 		[DllImportAttribute("gdi32.dll")]
 		public static extern IntPtr CreateDC(string lpszDriver, string lpszDevice, string lpszOutput, int lpInitData);
 
 		[DllImport("gdi32.dll")]
 		public static extern IntPtr CreateCompatibleDC(IntPtr hdc);
 
-		//创建与系统匹配的图像资源
+		// 创建与系统匹配的图像资源
 		[DllImport("gdi32.dll")]
 		public static extern IntPtr CreateCompatibleBitmap(IntPtr hdc, int nWidth, int nHeight);
 
 		[DllImport("gdi32.dll")]
 		public static extern IntPtr SelectObject(IntPtr hdc, IntPtr hgdiobj);
 
-		//删除用过的资源
+		// 删除用过的资源
 		[DllImport("gdi32.dll")]
 		public static extern int DeleteDC(IntPtr hdc);
 
-		//释放用过的句柄等资源
+		// 释放用过的句柄等资源
 		[DllImport("user32.dll")]
 		public static extern bool ReleaseDC(IntPtr hwnd, IntPtr hdc);
 
-		//释放用过的画笔,等图像资源
+		// 释放用过的画笔,等图像资源
 		[DllImport("gdi32.dll")]
 		public static extern bool DeleteObject(IntPtr hdc);
 
-		//用于像素放大,最后一参数cc0020
+		// 用于像素放大,最后一参数cc0020
 		[DllImport("gdi32.dll")]
 		public static extern bool StretchBlt(IntPtr hdcDest, int xDest, int yDest, int wDest, int hDest, IntPtr hdcSrc, int xSrc, int ySrc, int wSrc, int hSrc, IntPtr rop);
 	}