26 |
|
|
27 |
#define snprintf _snprintf |
#define snprintf _snprintf |
28 |
|
|
29 |
bool bHooked = false; |
HHOOK hCbtProc = 0; |
30 |
bool bHooked2 = false; |
HHOOK hShellProc = 0; |
31 |
bool bHooked3 = false; |
HHOOK hWndProc = 0; |
|
HHOOK hhook = 0; //cbt |
|
|
HHOOK hhook2 = 0; //shell |
|
|
HHOOK hhook3 = 0; //wnd proc |
|
32 |
HINSTANCE hInst = 0; |
HINSTANCE hInst = 0; |
33 |
HANDLE m_vcHandle = 0; |
HANDLE m_vcHandle = 0; |
34 |
|
|
77 |
LRESULT CALLBACK CallWndProc( int nCode, WPARAM wParam, LPARAM lParam ) |
LRESULT CALLBACK CallWndProc( int nCode, WPARAM wParam, LPARAM lParam ) |
78 |
{ |
{ |
79 |
if ( nCode < 0 ) { |
if ( nCode < 0 ) { |
80 |
return CallNextHookEx( hhook3, nCode, wParam, lParam ); |
return CallNextHookEx( hWndProc, nCode, wParam, lParam ); |
81 |
} |
} |
82 |
|
|
83 |
char windowTitle[ 150 ] = { "" |
char windowTitle[ 150 ] = { "" |
155 |
"SETSTATE1,0x%p,%s,0x%x,0x%x\n", |
"SETSTATE1,0x%p,%s,0x%x,0x%x\n", |
156 |
details->hwnd, |
details->hwnd, |
157 |
cs->lpszName, |
cs->lpszName, |
158 |
1, // FIXME: Check for WS_MAXIMIZE/WS_MINIMIZE |
1, // FIXME: Check for WS_MAXIMIZE/WS_MINIMIZE |
159 |
0 ); |
0 ); |
160 |
result[ sizeof( result ) - 1 ] = '\0'; |
result[ sizeof( result ) - 1 ] = '\0'; |
161 |
WriteToChannel( result ); |
WriteToChannel( result ); |
191 |
break; |
break; |
192 |
} |
} |
193 |
|
|
194 |
return CallNextHookEx( hhook3, nCode, wParam, lParam ); |
return CallNextHookEx( hWndProc, nCode, wParam, lParam ); |
195 |
} |
} |
196 |
|
|
197 |
LRESULT CALLBACK CbtProc( int nCode, WPARAM wParam, LPARAM lParam ) |
LRESULT CALLBACK CbtProc( int nCode, WPARAM wParam, LPARAM lParam ) |
198 |
{ |
{ |
199 |
if ( nCode < 0 ) { |
if ( nCode < 0 ) { |
200 |
return CallNextHookEx( hhook, nCode, wParam, lParam ); |
return CallNextHookEx( hCbtProc, nCode, wParam, lParam ); |
201 |
} |
} |
202 |
|
|
203 |
char windowTitle[ 150 ] = { "" |
char windowTitle[ 150 ] = { "" |
233 |
|
|
234 |
|
|
235 |
|
|
236 |
return CallNextHookEx( hhook, nCode, wParam, lParam ); |
return CallNextHookEx( hCbtProc, nCode, wParam, lParam ); |
237 |
} |
} |
238 |
|
|
239 |
|
|
240 |
LRESULT CALLBACK ShellProc( int nCode, WPARAM wParam, LPARAM lParam ) |
LRESULT CALLBACK ShellProc( int nCode, WPARAM wParam, LPARAM lParam ) |
241 |
{ |
{ |
242 |
if ( nCode < 0 ) { |
if ( nCode < 0 ) { |
243 |
return CallNextHookEx( hhook, nCode, wParam, lParam ); |
return CallNextHookEx( hShellProc, nCode, wParam, lParam ); |
244 |
} |
} |
245 |
|
|
246 |
char windowTitle[ 150 ] = { "" |
char windowTitle[ 150 ] = { "" |
349 |
} |
} |
350 |
|
|
351 |
|
|
352 |
return CallNextHookEx( hhook, nCode, wParam, lParam ); |
return CallNextHookEx( hShellProc, nCode, wParam, lParam ); |
353 |
} |
} |
354 |
|
|
355 |
DLL_EXPORT void SetHooks( void ) |
DLL_EXPORT void SetHooks( void ) |
356 |
{ |
{ |
357 |
if ( !bHooked ) { |
if ( !hCbtProc ) { |
358 |
hhook = SetWindowsHookEx( WH_CBT, ( HOOKPROC ) CbtProc, hInst, ( DWORD ) NULL ); |
hCbtProc = SetWindowsHookEx( WH_CBT, ( HOOKPROC ) CbtProc, hInst, ( DWORD ) NULL ); |
|
bHooked = true; |
|
359 |
} |
} |
360 |
|
|
361 |
#if 0 |
#if 0 |
362 |
if ( !bHooked2 ) { |
if ( !hShellProc ) { |
363 |
hhook2 = SetWindowsHookEx( WH_SHELL, ( HOOKPROC ) ShellProc, hInst, ( DWORD ) NULL ); |
hShellProc = SetWindowsHookEx( WH_SHELL, ( HOOKPROC ) ShellProc, hInst, ( DWORD ) NULL ); |
|
bHooked2 = true; |
|
364 |
} |
} |
365 |
#endif |
#endif |
366 |
|
|
367 |
if ( !bHooked3 ) { |
if ( !hWndProc ) { |
368 |
hhook3 = SetWindowsHookEx( WH_CALLWNDPROC, ( HOOKPROC ) CallWndProc, hInst, ( DWORD ) NULL ); |
hWndProc = SetWindowsHookEx( WH_CALLWNDPROC, ( HOOKPROC ) CallWndProc, hInst, ( DWORD ) NULL ); |
|
bHooked3 = true; |
|
369 |
} |
} |
370 |
} |
} |
371 |
|
|
372 |
DLL_EXPORT void RemoveHooks( void ) |
DLL_EXPORT void RemoveHooks( void ) |
373 |
{ |
{ |
374 |
if ( bHooked ) { |
if ( hCbtProc ) { |
375 |
UnhookWindowsHookEx( hhook ); |
UnhookWindowsHookEx( hCbtProc ); |
|
bHooked = false; |
|
376 |
} |
} |
377 |
|
|
378 |
if ( bHooked2 ) { |
if ( hShellProc ) { |
379 |
UnhookWindowsHookEx( hhook2 ); |
UnhookWindowsHookEx( hShellProc ); |
|
bHooked2 = false; |
|
380 |
} |
} |
381 |
|
|
382 |
if ( bHooked3 ) { |
if ( hWndProc ) { |
383 |
UnhookWindowsHookEx( hhook3 ); |
UnhookWindowsHookEx( hWndProc ); |
|
bHooked3 = false; |
|
384 |
} |
} |
385 |
} |
} |
386 |
|
|