/[rdesktop]/sourceforge.net/trunk/seamlessrdp/ServerExe/HookDll/hookdll.cpp
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /sourceforge.net/trunk/seamlessrdp/ServerExe/HookDll/hookdll.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1007 by astrand, Tue Aug 30 12:04:08 2005 UTC revision 1008 by astrand, Tue Aug 30 12:31:58 2005 UTC
# Line 26  HWND hWnd = 0; Line 26  HWND hWnd = 0;
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    
# Line 80  BOOL APIENTRY DllMain( HINSTANCE hinstDL Line 77  BOOL APIENTRY DllMain( HINSTANCE hinstDL
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 ] = { ""
# Line 158  LRESULT CALLBACK CallWndProc( int nCode, Line 155  LRESULT CALLBACK CallWndProc( int nCode,
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 );
# Line 194  LRESULT CALLBACK CallWndProc( int nCode, Line 191  LRESULT CALLBACK CallWndProc( int nCode,
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 ] = { ""
# Line 236  LRESULT CALLBACK CbtProc( int nCode, WPA Line 233  LRESULT CALLBACK CbtProc( int nCode, WPA
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 ] = { ""
# Line 352  LRESULT CALLBACK ShellProc( int nCode, W Line 349  LRESULT CALLBACK ShellProc( int nCode, W
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    

Legend:
Removed from v.1007  
changed lines
  Added in v.1008

  ViewVC Help
Powered by ViewVC 1.1.26