Just a conceptual (and very late) idea: how about hooking the GetDC, GetWindowDC and BeginPaint (...) calls, returning some kind of memory DC with a bitmap selected into it (size equivalent to the window that would be drawn onto normally), letting the process draw its things into this memory DC, then when ReleaseDC or EndPaint (you would need to hook those too) is called, transfer the content of the DC over to your process trough a socket or named pipe or somesuch along with size and position information and then blitting it into your own window. Of course there's also the problem that this method would still leave the original application's window hanging around the desktop undrawn and you would also need to direct input (clicks, mouse move events...) back to the original application for processing which might also pose problems, but maybe this could be a starting point towards something useful...
> The problem with computers is that they do what you tell them to do and not what you want them to do. < > //TODO: Implement signature here<