OSDN Git Service

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