OSDN Git Service

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