I'm trying to capture the desktop screen using Windows Magnification APIs based on code sample given in https://www.codeproject.com/Articles/607288/Screenshot-using-the-Magnification-library?msg=5570528#xx5570528xx.
The program (32bit executable) works pretty good on Windows8 and Windows10 but fails on Windows7 OS. I compiled the program into 64bit and the behavior is same even for the sample program mentioned in the above codeproject thread.
After debugging I figured out that the MagImageScalingCallback function returns image width and height as 4*4 instead of my monitor's size and that causes the program to crash or capture a blank screen on Windows7 machines (reference: https://learn.microsoft.com/en-us/windows/desktop/api/magnification/ns-magnification-tagmagimageheader).
All the API calls (MagInitialize, CreateWindow, MagSetWindowFilterList & MagSetWindowSource) are successful. There are no API call failures or mistakes in the code flow in terms of Initializing creating, setting desktop area & assigning filter list.
DWM (Aero theme) is turned off (as per reference: https://learn.microsoft.com/en-us/windows/desktop/api/magnification/nf-magnification-magsetimagescalingcallback)
I couldn't find any resources related to this topic even after researching for about 3 days. I have to use Magnification APIs because I have the need to capture windows that stays behind other windows on the desktop.
Any help would be appreciated.
Update 1:
I figured out that the application is able to capture the screen only when Aero theme is enabled and that contradicts with the statement in https://learn.microsoft.com/en-us/windows/desktop/api/magnification/nf-magnification-magsetimagescalingcallback.
I'm not sure how could I make it work on Operating systems with Aero theme disabled or not available by default.