Me surgió la necesidad de tener que obligar a un proceso a repintarse conociendo sólo su PID, para ello escribí este código:
procedure ReDrawWindows(PID: DWORD); function EnumWindowsProc(Wnd: HWND; PID: PDWORD): BOOL; stdcall; var _PID: DWORD; cr: TRect; begin GetWindowThreadProcessId(Wnd, _PID); if PID^ = _PID then begin Windows.GetClientRect(Wnd, cr); InvalidateRect(Wnd, @cr, true); RedrawWindow(Wnd, @cr, 0, RDW_FRAME + RDW_ERASE + RDW_INVALIDATE + RDW_UPDATENOW + RDW_ALLCHILDREN); end; Result:= true; end; begin EnumWindows(@EnumWindowsProc, LPARAM(@PID)); end;
Saludos.