It seems Windows is unable to display different background images on different monitors on a multi-monitor system out of the box. But I noticed there are quite a few commercial applications available which provide this feature.
Which APIs can be (mis-)used to provide this functionality? If there’s no special API for this feature, can it be done by hooking into another Win32 API function? If so, which one?
Wallpaper replacement applications on Windows don’t hook into the Windows API, they make a window the size of the desktop and render an image on it. There’s APIs in Win32 to make such a window unclickable and living below everything else, and sized correctly for the desktop.