OSDN Git Service

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