- If workarea == screen rect, lie.
No, report that there is no a taskbar.
There's no clean way to do that.
The MSDN documentation for ABM_GETTASKBARPOS says that it returns a bounding rectangle for the taskbar and a boolean. MSDN gives no indication of what the boolean result means, but under normal circumstances it is TRUE.
This is the "old" implementation: http://source.winehq.org/source/dlls/shell32/shell32_main.c?v=wine-1.0.1#L88...
In general, the old implementation had no correlation to what the function was actually meant to do, so I replaced it with stubs before doing a proper implementation. Now ABM_GETTASKBARPOS always returns FALSE: http://source.winehq.org/source/programs/explorer/appbar.c#L196
Does returning FALSE mean there's no taskbar? I have no idea. I can think of only a few reasons the taskbar might be missing from Windows machine that has an SHAppBarMessage implementation: * explorer.exe is not running. * You're using Windows NT 3.51. (MSDN isn't entirely consistent on the question of whether SHAppBarMessage exists there, but I don't think it had a taskbar.) * You're using a shell replacement. (I don't know how those work.)
It's perfectly reasonable for developers to write programs that function in none of those circumstances for current versions of Windows. Effectively, reporting that there is no taskbar could be a serious error.
That will often be wrong, and there's no clear benefit to doing that over lieing consistently. The one program I know of that relies on ABM_GETTASKBARPOS, rapid uploader, apparently worked fine when it was an alias of GetWindowRect (which is completely braindead). I cannot think of any legitimate use for the information returned by this api.
Then there is no point in sending such an "improvement".
There is. It will make rapid uploader work again.