6 #include "DCHookLoader.h"
7 #include "HookLoader.h"
10 // LoadHook()
\82Íapplication
\97§
\82¿
\8fã
\82ª
\82è
\8e\9e\81A
\82Ü
\82½
\82ÍConfiguration
\8e\9e\82É
\82P
\89ñ
\82¾
\82¯
\8cÄ
\82Î
\82ê
\82é
11 // UnloadHook()
\82ÍLoadHook()
\82Æ
\95K
\82¸
\91Î
\82Å
\8eg
\97p
\82·
\82é
16 #define IsWow64() (fWow64)
18 #define IsWow64() (false)
22 THookArray::~THookArray()
27 bool THookArray::Load(HWND hwnd)
30 foreach(Hooks, it, hook_vec){
31 if (!(*it)->Load(hwnd)){
38 void THookArray::Unload()
40 foreach(Hooks, it, hook_vec){
44 void THookArray::Uninit()
46 foreach(Hooks, it, hook_vec){
50 bool THookArray::Init(HWND hwnd)
52 DBW("HookArray::Init");
55 DBW("Init1"); Hooks[1]->Init(hwnd); // 64bit
56 DBW("Init0"); Hooks[0]->Init(hwnd); // 32bit
58 foreach(Hooks, it, hook_vec){
59 if (!(*it)->Init(hwnd)){
66 void THookArray::Init32(HWND hwnd)
70 int THookArray::Config( int clickonly, int keyaction, int keyflag )
72 foreach(Hooks, it, hook_vec){
73 (*it)->Config(clickonly, keyaction, keyflag);
77 int THookArray::Config2( struct TDCHConfig *cfg )
79 foreach(Hooks, it, hook_vec){
84 int THookArray::Capture()
87 foreach(Hooks, it, hook_vec){
93 int THookArray::CaptureAsync()
96 foreach(Hooks, it, hook_vec){
97 if ((*it)->CaptureAsync())
102 int THookArray::CaptureAsyncWait()
105 foreach(Hooks, it, hook_vec){
106 int r = (*it)->CaptureAsyncWait();
114 int THookArray::Debug()
117 foreach(Hooks, it, hook_vec){
118 int r = (*it)->Debug();
125 void THookArray::clear()
128 foreach(Hooks, it, hook_vec){
134 bool THookArray::IsLoaded()
138 return Hooks[0]->IsLoaded();
141 /// TDCHookLoader ///
142 TDCHookLoader::TDCHookLoader(bool use64)
145 EnableSendAllKeys = false;
150 #if !defined(DSKSVR) && !defined(DCHOOK)
151 void TDCHookLoader::SaveProfile(const tchar *param_string)
153 prof.WriteString(PFS_SHORTCUT, StrParams, param_string);
156 tnstr TDCHookLoader::LoadProfile()
158 return prof.ReadString(PFS_SHORTCUT, StrParams, _T(""));
162 bool TDCHookLoader::LoadHook( HWND hwndParent )
164 if (Hooks.IsLoaded() || LoadPending) return true;
166 if (Hooks.size()==0){
167 Hooks.add(Hook32 = new THookLoader(NAME_DKPPHKDLL) );
172 if (Use64 && IsWow64()){
173 Hooks.add(Hook64 = new THookLoader64(hwndParent));
178 if (!Hooks.Load(hwndParent)){
179 DBW("Hooks.Load failed");
183 if (Hook64 && Hook64->IsPending()){
185 hwndSavedParent = hwndParent;
189 LoadHookPost(hwndParent);
194 void TDCHookLoader::LoadHookPost(HWND hwndParent)
196 Hooks.Init(hwndParent);
198 int num = LoadKeyProfiles();
199 if ( num > 0 || EnableSendAllKeys ){
200 if ( !Hooks.InitHook( hwndParent, UM_SHORTCUT ) ){
205 #if !defined(DSKSVR) && !defined(DCHOOK)
206 //Note: SendAllKeys
\82ð
\97L
\8cø
\82É
\82·
\82é
\82Æ32bitApp
\8fã
\82Å
\93ñ
\8fd
\82É
\83C
\83x
\83\93\83g
\82ª
\91\97\82ç
\82ê
\82Ä
\82
\82é
\81B
\81i
\8c´
\88ö
\95s
\96¾
\81j
207 //
\82»
\82Ì
\82½
\82ß
\82±
\82Ì
\90Ý
\92è
\82¾
\82¯
\82Í32bit
\91¤
\82¾
\82¯
\97L
\8cø
\82É
\82·
\82é
\81B
208 //
\81i64bitApp
\8fã
\82Å
\82Í
\93ñ
\8fd
\82É
\82È
\82ç
\82È
\82¢
\81j
209 //
\82È
\82¨
\81A64bitHook
\82¾
\82¯
\82ðload
\82µ
\82½
\8fê
\8d\87\82Í
\83C
\83x
\83\93\83g
\82ª
\82Ü
\82Á
\82½
\82
\82±
\82È
\82
\82È
\82é
\81i
\82±
\82ê
\82à
\8c´
\88ö
\95s
\96¾
\81j
211 Hook32->Add( NULL, EnableSendAllKeys, FUNC_SENDALLKEYS );
214 if ( num == 0 && !EnableSendAllKeys ){
220 void TDCHookLoader::UnloadHook()
223 if (!Hooks.IsLoaded()){
226 //Hooks.FinishHook();
231 #if 1 //
\82µ
\82Î
\82ç
\82
\82Í
\82±
\82Á
\82¿
\82Ì
\95û
\96@(C++Builder
\82ª
\91Î
\89\9e\82µ
\82Ä
\82¢
\82È
\82¢ -
\82Æ
\82¢
\82¤
\82©
\81AMS
\82Ìbug
\82Å
\82¤
\82Ü
\82link
\82Å
\82«
\82È
\82¢)
232 typedef long (WINAPI *FNBroadcastSystemMessage)
233 (DWORD dwFlags,LPDWORD lpdwRecipients,UINT uiMessage,WPARAM wParam,LPARAM lParam);
234 HINSTANCE hDll = LoadLibrary( _T("user32") );
236 FNBroadcastSystemMessage _BroadcastSystemMessage = (FNBroadcastSystemMessage)GetProcAddress( hDll, "BroadcastSystemMessage");
237 if ( _BroadcastSystemMessage ){
238 UINT msg = RegisterWindowMessage( _T("wmBroadcastForUnhook") );
240 DWORD receipt = BSM_APPLICATIONS;
241 _BroadcastSystemMessage( BSF_POSTMESSAGE, &receipt, msg, 0, 0 ); // Win95
\82Å
\82Ísupport
\82³
\82ê
\82Ä
\82¢
\82È
\82¢
\8aÖ
\90\94
247 UINT msg = RegisterWindowMessage( "wmBroadcastForUnhook" );
248 DWORD receipt = BSM_APPLICATIONS;
249 BroadcastSystemMessage( BSF_POSTMESSAGE, &receipt, msg, 0, 0 ); // Win95
\82Å
\82Ísupport
\82³
\82ê
\82Ä
\82¢
\82È
\82¢
\8aÖ
\90\94
254 void TDCHookLoader::Config( int clickonly, int keyaction, int keyflag )
256 Hooks.Config(clickonly, keyaction, keyflag);
258 void TDCHookLoader::Config2( struct TDCHConfig *cfg )
263 void TDCHookLoader::Capture()
267 void TDCHookLoader::CaptureAsync()
269 Hooks.CaptureAsync();
271 void TDCHookLoader::CaptureAsyncWait()
273 Hooks.CaptureAsyncWait();
275 void TDCHookLoader::Init32(HWND hwnd)
280 void TDCHookLoader::Notify64(LPARAM lParam)
282 DBW("Notify64 : lParam=%08X Hook64=%08X", lParam, Hook64);
283 if (!Hook64 || !lParam)
286 Hook64->SetTarget((HWND)lParam);
288 LoadHookPost(hwndSavedParent);