explorer: improve ABM_GETTASKBARPOS stub

Vincent Povirk madewokherd+8cd9 at gmail.com
Sun Dec 7 23:04:12 CST 2008


>> 3. 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#L886

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.



More information about the wine-devel mailing list