HOOKS.H
上传用户:zhang8947
上传日期:2007-01-08
资源大小:1910k
文件大小:3k
源码类别:

多国语言处理

开发平台:

Visual C++

  1. #ifndef WM_USER_INPUT_CHAR
  2. //输入板上的字符操作
  3. #define WM_USER_INPUT_CHAR (WM_USER+2)
  4. #endif
  5. #ifndef WM_USER_SCROLL_PAGE
  6. //进行翻页
  7. #define WM_USER_SCROLL_PAGE (WM_USER+4)
  8. #endif
  9. #define MAX_CHAR_NUM 77 //其它键最大数目
  10. #define MAX_SYMBOL_NUM 94 //西文字符数
  11. //#define VK_ESCAPE 0x1b
  12. #define VK_F1 0x70
  13. #define VK_F2 0x71
  14. #define VK_F3 0x72
  15. #define VK_F4 0x73
  16. #define VK_F5 0x74
  17. #define VK_F6 0x75
  18. #define VK_F7 0x76
  19. #define VK_F8 0x77
  20. #define VK_F9 0x78
  21. #define VK_F10 0x79
  22. //#define VK_F11 0x7a
  23. //#define VK_F12 0x7b
  24. //#define VK_SNAPSHOT 0x2c
  25. #define VK_PAUSE 0x13
  26. #define VK_BACK 0x08
  27. #define VK_TAB 0x09
  28. //#define VK_RETURN 0x0d
  29. #define VK_SPACE 0x20
  30. //#define VK_INSERT 0x2d
  31. //#define VK_DELETE 0x2e
  32. #define VK_HOME 0x24
  33. #define VK_END 0x23
  34. #define VK_PRIOR 0x21
  35. #define VK_NEXT 0x22
  36. #define VK_LEFT 0x25
  37. #define VK_UP 0x26
  38. #define VK_RIGHT 0x27
  39. #define VK_DOWN 0x28
  40. #define VK_0 '0'
  41. #define VK_1 '1'
  42. #define VK_2 '2'
  43. #define VK_3 '3'
  44. #define VK_4 '4'
  45. #define VK_5 '5'
  46. #define VK_6 '6'
  47. #define VK_7 '7'
  48. #define VK_8 '8'
  49. #define VK_9 '9'
  50. #define VK_A 'A'
  51. #define VK_B 'B'
  52. #define VK_C 'C'
  53. #define VK_D 'D'
  54. #define VK_E 'E'
  55. #define VK_F 'F'
  56. #define VK_G 'G'
  57. #define VK_H 'H'
  58. #define VK_I 'I'
  59. #define VK_J 'J'
  60. #define VK_K 'K'
  61. #define VK_L 'L'
  62. #define VK_M 'M'
  63. #define VK_N 'N'
  64. #define VK_O 'O'
  65. #define VK_P 'P'
  66. #define VK_Q 'Q'
  67. #define VK_R 'R'
  68. #define VK_S 'S'
  69. #define VK_T 'T'
  70. #define VK_U 'U'
  71. #define VK_V 'V'
  72. #define VK_W 'W'
  73. #define VK_X 'X'
  74. #define VK_Y 'Y'
  75. #define VK_Z 'Z'
  76. #define MAX_KEYS_NUM 256 //键盘键的数目
  77. //热键参数
  78. class CHotKeyParam
  79. {
  80. public:
  81. int m_nHotKeyNum ; //热键数目
  82. //热键内容
  83. BOOL m_bCtrl[MAX_HOT_KEY] ; //Ctrl键状态,0无,1有
  84. BOOL m_bAlt[MAX_HOT_KEY] ; //Alt键状态,0无,1有
  85. BOOL m_bShift[MAX_HOT_KEY] ; //Shift键状态,0无,1有
  86. int  m_nChar[MAX_HOT_KEY] ; //其它键
  87. //其它键状态,0按下时有效,1弹起时有效
  88. BOOL m_bCharStatus[MAX_HOT_KEY] ;
  89. //判断该热键是否有效,1有效,0无效
  90. BOOL m_bEnable[MAX_HOT_KEY] ;
  91. FARPROC m_fpFunc[MAX_HOT_KEY] ; //与该热键关联的执行函数
  92. HHOOK m_hHookHandle ; //钩子句柄
  93. //按钮动作是否有效,1有效,0无效,初始为1
  94. BOOL m_bActionOk ;
  95. //标记按过那个热键,如果是-1,则没有按过
  96. int m_nHaveDoneKey ;
  97. //每个键的状态,0按下,1没有,初始为1
  98. BOOL m_bKeysStatus[MAX_KEYS_NUM] ;
  99. public:
  100. CHotKeyParam( void ) ;
  101. ~CHotKeyParam( void ) ;
  102. void SetEnableFlag( int n , BOOL b ) ;
  103. } ;
  104. //WH_GETMESSAGE 钩子函数对象
  105. class CGetMessageParam
  106. {
  107. public:
  108. HHOOK m_hHookHandle ; //钩子句柄
  109. HWND m_hFocusWnd ; //当前有输入焦点的窗口
  110. public:
  111. CGetMessageParam( void ) ;
  112. ~CGetMessageParam( void ) ;
  113. };
  114. #ifdef __cplusplus
  115. extern "C" {
  116. #endif
  117. //当按下某键时,判断是否有符合条件的热键
  118. BOOL JudgeKeysWhenDown( WPARAM wParam ) ;
  119. //当松开某键时,判断是否有符合条件的热键
  120. BOOL JudgeKeysWhenUp( WPARAM wParam ) ;
  121. //判断是否所有键的状态都符合要求
  122. BOOL AllKeysStatusIsOk( int n ) ;
  123. //热键钩子函数
  124. LRESULT CALLBACK HotKeyProc(
  125. int code , /* process-message flag */
  126. WPARAM wParam , /* virtual-key code */
  127. LPARAM lParam ) ; /* keyboard-message information */
  128. //指取翻译辅助键
  129. void AidFinger( void ) ;
  130. //输入法向后翻页
  131. void PageNext( void ) ;
  132. //输入法向前翻页
  133. void PagePrior( void ) ;
  134. //WH_GETMESSAGE钩子函数
  135. LRESULT __export CALLBACK GetMessageProc(
  136. int code , /* process-message flag */
  137. WPARAM wParam , /* undefined */
  138. LPARAM lParam ) ; /* pointer to MSG structure */
  139. #ifdef __cplusplus
  140. }
  141. #endif