Inverting windows screen

I'm searching for a method to invert the whole windows screen colors. At the lowest possible level in the graphics chain. But (if that's possible) without using a shader inside the graphics card. Maybe by hooking into the graphic driver chain or by some neat trick with DirectX.

Purpose: Many programs use a white background by default. Changing the colors for every program is tedious if possible at all. Setting windows to "High Contrast" mode works for some applications but not for all.

So my thought is to invert the whole screen way below GDI or other graphic APIs. So that the applications AND windows itself doesn't even know that the colors on the monitor are inverted.

But I found nothing to start with. I don't even really know what to search for. I know this could be done by using something like a CUDA shader or AMP or OpenCL. But I was hoping there is a somewhat easier way. (I don't want to learn the shader language for just one little project)
This guy did it with windows forms, but maybe some of the functions he used could be used in WinAPI, I haven't looked through all his code there to find where the actual color inversion happens.

http://arcanesanctum.net/negativescreen/ <- shows screen shots, click here and instructions below

- C# sources <-click on this link under his downloads section, sends to page that displays code information, readme, etc.

- NegativeScreen <- click there to see actual code files, will display without downloading

Edit;
On further reading the page I provided, they say that they used the Windows Magnification API, http://msdn.microsoft.com/en-us/library/windows/desktop/ms692162%28v=vs.85%29.aspx , which also has color management functions... That API is only available for Windows Vista and later, Hope that helps
Last edited on
Wooaaahhh :D

That's exactly what I was searching for. Thanks a lot.
Topic archived. No new replies allowed.