Ir al contenido



Foto

Como repintar todas las ventanas de un proceso


  • Por favor identifícate para responder
No hay respuestas en este tema

#1 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 3.621 mensajes
  • LocationMadrid - España

Escrito 04 octubre 2015 - 09:44

Hace tiempo que no publico código en C/C++ dentro de este foro, aunque si lo hago acompañando código delphi, así que voy a repetir el código que expuse aquí. Se trata de conseguir que un proceso del que conocemos sólo su Pid, se repinte:

 


cpp
  1. void ReDrawWindows(DWORD PID)
  2. {
  3.   struct TWinParam{
  4.     static BOOL CALLBACK EnumWindowsProc(HWND hWnd, DWORD* Pid){
  5.       DWORD PId = 0;
  6.       GetWindowThreadProcessId(hWnd, &PId);
  7.       if(*Pid == PId){
  8.         TRect cr;
  9.         ::GetClientRect(hWnd, &cr);
  10.         InvalidateRect(hWnd, &cr, true);
  11.         RedrawWindow(hWnd, &cr, 0, RDW_FRAME|RDW_ERASE|RDW_INVALIDATE|RDW_UPDATENOW|RDW_ALLCHILDREN);
  12.       }
  13.       return true;
  14.     }
  15.   } WinParam;
  16.   EnumWindows((PROC)TWinParam::EnumWindowsProc, LPARAM(&PID));
  17. }

 

 

Saludos.


  • 1