I often use pixel color data to automate tasks, analyze various program states, and augment user input, and under Windows XP this was very easy.
Now that I’ve migrated to Windows 7 I find it impossible to do any of these tricks, due to some as of yet unresolved changes.
My usual workflow involved groups of very simple Autohotkey scripts featuring the PixelGetColor and PixelSearch functions.
These functions provided a simple and reasonably performance efficient way of processing portions of the screen,
even (and this is key) when the analysis must be done using several thousand pixels in a few milliseconds.
The primary use case which has been broken involves capturing pixel data from fullscreen OpenGL and Direct3d programs.
It appears that W7 has some added abstraction which prevents GDI functions from accessing hardware accelerated fullscreen applications.
The failure is present irrespective of Aero, DWM etc.
Has anyone else encountered this problem?
Is anyone aware of the specific changes made between XP and 7 that led to this functionality being broken, and why those changes were made?
Is there a known or theorized workaround for this?
Perhaps some generic driver wrapper / hook?
Or a simple-but-obscure call that returns part of the frame buffer with minimal performance hit?
I can probably do the parsing / searching etc myself (despite being a very unskilled unsubtle programmer and generally uncomfortable around c/c++),
but I’m stuck before even reaching that step.