OSDN Git Service

a3e140118d7c33574fecbe8d34b280fdfd969fff
[yamy/yamy.git] / hook.h
1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r
2 // hook.h\r
3 \r
4 \r
5 #ifndef _HOOK_H\r
6 #  define _HOOK_H\r
7 \r
8 #  include "misc.h"\r
9 #  include <tchar.h>\r
10 #ifdef NO_DRIVER\r
11 #  include <windows.h>\r
12 #endif // NO_DRIVER\r
13 \r
14 ///\r
15 #  define HOOK_PIPE_NAME \\r
16  _T("\\\\.\\pipe\\GANAware\\mayu\\{4B22D464-7A4E-494b-982A-C2B2BBAAF9F3}") _T(VERSION)\r
17 ///\r
18 #ifdef USE_MAILSLOT\r
19 #  define NOTIFY_MAILSLOT_NAME \\r
20 _T("\\\\.\\mailslot\\GANAware\\mayu\\{330F7914-EB5B-49be-ACCE-D2B8DF585B32}") _T(VERSION)\r
21 ///\r
22 #endif // USE_MAILSLOT\r
23 #  define WM_MAYU_MESSAGE_NAME _T("GANAware\\mayu\\WM_MAYU_MESSAGE")\r
24 \r
25 ///\r
26 enum MayuMessage\r
27 {\r
28   MayuMessage_notifyName,\r
29   MayuMessage_funcRecenter,\r
30   MayuMessage_funcSetImeStatus,\r
31   MayuMessage_funcSetImeString,\r
32 };\r
33 \r
34 \r
35 ///\r
36 struct Notify\r
37 {\r
38   ///\r
39   enum Type\r
40   {\r
41     Type_setFocus,                              /// NotifySetFocus\r
42     Type_name,                                  /// NotifySetFocus\r
43     Type_lockState,                             /// NotifyLockState\r
44     Type_sync,                                  /// Notify\r
45     Type_threadDetach,                          /// NotifyThreadDetach\r
46     Type_command,                               /// NotifyThreadDetach\r
47     Type_show,                                  /// NotifyShow\r
48     Type_log,                                   /// NotifyLog\r
49   };\r
50   Type m_type;                                  ///\r
51   DWORD m_debugParam;                           /// (for debug)\r
52 };\r
53 \r
54 \r
55 ///\r
56 struct NotifySetFocus : public Notify\r
57 {\r
58   DWORD m_threadId;                             ///\r
59   DWORD m_hwnd;                         ///\r
60   _TCHAR m_className[GANA_MAX_PATH];            ///\r
61   _TCHAR m_titleName[GANA_MAX_PATH];            ///\r
62 };\r
63 \r
64 \r
65 ///\r
66 struct NotifyLockState : public Notify\r
67 {\r
68   bool m_isNumLockToggled;                      ///\r
69   bool m_isCapsLockToggled;                     ///\r
70   bool m_isScrollLockToggled;                   ///\r
71   bool m_isKanaLockToggled;                     ///\r
72   bool m_isImeLockToggled;                      ///\r
73   bool m_isImeCompToggled;                      ///\r
74 };\r
75 \r
76 \r
77 ///\r
78 struct NotifyThreadDetach : public Notify\r
79 {\r
80   DWORD m_threadId;                             ///\r
81 };\r
82 \r
83 \r
84 ///\r
85 struct NotifyCommand : public Notify\r
86 {\r
87   HWND m_hwnd;                                  ///\r
88   UINT m_message;                               ///\r
89   WPARAM m_wParam;                              ///\r
90   LPARAM m_lParam;                              ///\r
91 };\r
92 \r
93 \r
94 enum\r
95 {\r
96   NOTIFY_MESSAGE_SIZE = sizeof(NotifySetFocus), ///\r
97 };\r
98 \r
99 \r
100 ///\r
101 struct NotifyShow : public Notify\r
102 {\r
103   ///\r
104   enum Show\r
105   {\r
106     Show_Normal,\r
107     Show_Maximized,\r
108     Show_Minimized,\r
109   };\r
110   Show m_show;                                  ///\r
111   bool m_isMDI;                                 ///\r
112 };\r
113 \r
114 \r
115 ///\r
116 struct NotifyLog : public Notify\r
117 {\r
118   _TCHAR m_msg[GANA_MAX_PATH];                  ///\r
119 };\r
120 \r
121 \r
122 ///\r
123 enum MouseHookType\r
124 {\r
125   MouseHookType_None = 0,                               /// none\r
126   MouseHookType_Wheel = 1 << 0,                 /// wheel\r
127   MouseHookType_WindowMove = 1 << 1,            /// window move\r
128 };\r
129 \r
130 #ifdef NO_DRIVER\r
131 class Engine;\r
132 typedef unsigned int (WINAPI *KEYBOARD_DETOUR)(Engine *i_engine, KBDLLHOOKSTRUCT *i_kid);\r
133 #endif // NO_DRIVER\r
134 \r
135 ///\r
136 class HookData\r
137 {\r
138 public:\r
139   USHORT m_syncKey;                             ///\r
140   bool m_syncKeyIsExtended;                     ///\r
141   bool m_doesNotifyCommand;                     ///\r
142   DWORD m_hwndTaskTray;                         ///\r
143   bool m_correctKanaLockHandling;               /// does use KL- ?\r
144   MouseHookType m_mouseHookType;                ///\r
145   int m_mouseHookParam;                 ///\r
146   DWORD m_hwndMouseHookTarget;          ///\r
147   POINT m_mousePos;                             ///\r
148 };\r
149 \r
150 \r
151 ///\r
152 #  define DllExport __declspec(dllexport)\r
153 ///\r
154 #  define DllImport __declspec(dllimport)\r
155 \r
156 \r
157 #  ifndef _HOOK_CPP\r
158 extern DllImport HookData *g_hookData;\r
159 extern DllImport int installHooks(KEYBOARD_DETOUR i_keyboardDetour, Engine *i_engine);\r
160 extern DllImport int uninstallHooks();\r
161 extern DllImport bool notify(void *data, size_t sizeof_data);\r
162 extern DllImport void notifyLockState();\r
163 #  endif // !_HOOK_CPP\r
164 \r
165 \r
166 #endif // !_HOOK_H\r