I'm trying to create a full screen overlay over the entire screen, which will change the colors / saturation etc. of the entire screen and add some Text and effects. Basically I want to "replace" the entire screen, while the user still has the ability to interact normally with Windows.
Solution 1
The problem however is, that if I simply create a TopMost
window over the entire screen, the user will not be able to interact with whatever is beneath this window.
Solution 2
Simply drawing on the desktop buffer doesn't solve the issue either. It will give nasty effects when windows are moved and also will result in heavy motion blur effects as well. This will never look good.
Solution 3
Hooking the "desktop draw event" is not possible in C# as I would have to inject a DLL into explorer.exe. This is not at all a pretty solution and will not work with C#. Also anti virus programs will likely detect it as something harmfull.
The closest thing I saw was this, but it the user will not be able to "click through" the overlay. In the example the overlay is mostly entirely transparent. Using a color other than the transparency key will result in the problem of Solution 1.
Question: How can I overlay the entire screen with effects efficiently?