/[winpt]/trunk/PTD/PTD.cpp
ViewVC logotype

Diff of /trunk/PTD/PTD.cpp

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

revision 333 by twoaday, Fri Sep 25 15:51:28 2009 UTC revision 334 by twoaday, Sun Nov 27 12:00:45 2011 UTC
# Line 83  PTD_CBT_proc (int code, WPARAM wparam, L Line 83  PTD_CBT_proc (int code, WPARAM wparam, L
83    
84  /* Return the last selected window */  /* Return the last selected window */
85  extern "C" HWND  extern "C" HWND
86  PTD_get_curr_hwnd (void)  PTD_get_current_window (void)
87  {  {
88      return curr_focus;      return curr_focus;
89  }  }
# Line 115  PTD_initialize (void) Line 115  PTD_initialize (void)
115       * As a result we need to ignore those windows to prevent failured       * As a result we need to ignore those windows to prevent failured
116       * in the code.       * in the code.
117       */       */
118        
119        // FIXME: I doubt this is working for Windows 7
120      shell_traywnd = FindWindowEx (NULL, NULL, "Shell_TrayWnd", NULL);      shell_traywnd = FindWindowEx (NULL, NULL, "Shell_TrayWnd", NULL);
121      rebar_w32 = FindWindowEx (shell_traywnd, NULL, "ReBarWindow32", NULL);      rebar_w32 = FindWindowEx (shell_traywnd, NULL, "ReBarWindow32", NULL);
122      mstask_swc = FindWindowEx (rebar_w32, NULL, "MSTaskSwWClass", NULL);      mstask_swc = FindWindowEx (rebar_w32, NULL, "MSTaskSwWClass", NULL);
# Line 131  PTD_initialize (void) Line 133  PTD_initialize (void)
133    
134  /* Remove the CTB hook from the system and reset all variables. */  /* Remove the CTB hook from the system and reset all variables. */
135  extern "C" void  extern "C" void
136  PTD_delete (void)  PTD_delete_hook (void)
137  {  {
138      if (!cbt_hook)      if (!cbt_hook)
139          return;          return;
# Line 144  PTD_delete (void) Line 146  PTD_delete (void)
146    
147  /* Return if the CTB hook is currently used. */  /* Return if the CTB hook is currently used. */
148  extern "C" int  extern "C" int
149  PTD_is_used (void)  PTD_is_hook_used (void)
150  {  {
151      return shell_traywnd && cbt_hook;      return shell_traywnd && cbt_hook;
152  }  }
153    
154    /* From the MSDN:
155     * "Typically, an application uses this function to play back a series
156     * of mouse and keyboard messages recorded previously by the
157     * JournalRecordProc hook procedure. As long as a JournalPlaybackProc
158     * hook procedure is installed, regular mouse and keyboard input is disabled."
159     */
160  static LRESULT CALLBACK  static LRESULT CALLBACK
161  PTD_playback_proc (int code, WPARAM wparam, LPARAM lparam)  PTD_playback_proc (int code, WPARAM wparam, LPARAM lparam)
162  {  {
# Line 157  PTD_playback_proc (int code, WPARAM wpar Line 164  PTD_playback_proc (int code, WPARAM wpar
164            
165      if (code == HC_SKIP) {      if (code == HC_SKIP) {
166          keyidx++;          keyidx++;
167          if (keyidx == nkeys) {          if (keyidx >= nkeys) {
168              UnhookWindowsHookEx (journ_hook);              UnhookWindowsHookEx (journ_hook);
169              journ_hook = NULL;              journ_hook = NULL;
170          }          }
# Line 174  PTD_playback_proc (int code, WPARAM wpar Line 181  PTD_playback_proc (int code, WPARAM wpar
181              em->message = journ_keys[keyidx] & 0x4000 ? WM_SYSKEYDOWN : WM_KEYDOWN;              em->message = journ_keys[keyidx] & 0x4000 ? WM_SYSKEYDOWN : WM_KEYDOWN;
182          else          else
183              em->message = journ_keys[keyidx] & 0x4000 ? WM_SYSKEYUP : WM_KEYUP;              em->message = journ_keys[keyidx] & 0x4000 ? WM_SYSKEYUP : WM_KEYUP;
184          em->paramL = LOBYTE( journ_keys[keyidx] )          em->paramL = LOBYTE (journ_keys[keyidx])
185              | (MapVirtualKey (LOBYTE (journ_keys[keyidx]), 0) << 8);              | (MapVirtualKey (LOBYTE (journ_keys[keyidx]), 0) << 8);
186          em->paramH = 1;          em->paramH = 1;
187          em->time = GetTickCount ();          em->time = GetTickCount ();
# Line 187  PTD_playback_proc (int code, WPARAM wpar Line 194  PTD_playback_proc (int code, WPARAM wpar
194    
195    
196  extern "C" BOOL  extern "C" BOOL
197  PTD_keyb_send (UINT *keys, UINT n_keys)  PTD_keyboard_send_keys (UINT *keys, UINT n_keys)
198  {  {
199      MSG msg;      MSG msg;
200      journ_keys = keys;      journ_keys = keys;
201      keyidx = 0;      keyidx = 0;
202      nkeys = n_keys;          nkeys = n_keys;
203            
204        /* Return immediately if there is an active hook */
205      if (journ_hook)      if (journ_hook)
206          return FALSE;          return FALSE;
207            
208      while (GetAsyncKeyState (VK_MENU) & 0x8000      while (GetAsyncKeyState (VK_MENU) & 0x8000 ||
209              || GetAsyncKeyState (VK_SHIFT) & 0x8000             GetAsyncKeyState (VK_SHIFT) & 0x8000 ||
210              || GetAsyncKeyState (VK_CONTROL) & 0x8000) {             GetAsyncKeyState (VK_CONTROL) & 0x8000) {
211          if (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE)) {          if (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE)) {
212              if (msg.message == WM_QUIT) {              if (msg.message == WM_QUIT) {
213                  PostMessage (msg.hwnd, msg.message, msg.wParam, msg.lParam);                  PostMessage (msg.hwnd, msg.message, msg.wParam, msg.lParam);
# Line 231  PTD_keyb_send (UINT *keys, UINT n_keys) Line 239  PTD_keyb_send (UINT *keys, UINT n_keys)
239  }  }
240    
241    
242  /*FILE *fp;*/  /* Main entry point for the DLL */
   
243  extern "C" BOOL WINAPI  extern "C" BOOL WINAPI
244  DllMain (HINSTANCE hinst, DWORD reason, LPVOID reserv)  DllMain (HINSTANCE hinst, DWORD reason, LPVOID reserv)
245  {  {
246      switch (reason)  {      switch (reason)  {
247      case DLL_PROCESS_ATTACH:      case DLL_PROCESS_ATTACH:
248            /* Handle to the attached process */
249          glob_hinst = hinst;          glob_hinst = hinst;
         /*  
         fp = fopen ("attach_pid.txt", "a+b");  
         if (fp != NULL) {        
             fprintf (fp, "[+ %lu]\r\n", GetCurrentProcessId());  
             fclose (fp);  
         }*/        
250          break;          break;
251                
252      case DLL_PROCESS_DETACH:      case DLL_PROCESS_DETACH:
         /*fp = fopen ("attach_pid.txt", "a+b");  
         if (fp != NULL) {  
             fprintf (fp, "[- %lu]\r\n", GetCurrentProcessId());  
             fclose (fp);  
         }*/  
253          break;          break;
254                    
255      case DLL_THREAD_ATTACH:        case DLL_THREAD_ATTACH:  

Legend:
Removed from v.333  
changed lines
  Added in v.334

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26