hi
I had the same problem in one of my previous project and I can say that it is not easy at all, I use most of the approaches (bitblt and other windows api, DirectX api, and more) but none of them works so I used a third party software to do that and handle the rest of things with code, in a way that final user don't need to do any thing more with that third party app (just need to install it) even the main software's process become the parent of that app and combine that app with itself so final user cant see that software opens .
I can give you the code of that part of my application if you like.
best regard.