OSDN Git Service

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