SysTray changes in Windows 7 Beta compared to Vista
"Karl-Henrik Henriksson [qwilk]" <[email protected]> Thu, 5 Feb 2009 01:27:17 +0100
| Newsgroups | gmane.comp.windows.shell-shocked.devel |
|---|---|
| Message-ID | <[email protected]> |
Hello all,
I noticed that the system tray didn't seem to behave the same way in
Windows 7 Beta as it does in Vista, so I whipped up a *box plugin to
let me see what was going on. Basically, what the plugin does is that
it adds an icon to the system tray, allows you to change the tray
version (i.e. NIM_SETVERSION) on the fly using bro@ms (the *box
equivalent to LiteStep !bangs), and then monitors the messages that
get forwarded to it from the system tray when you e.g. move the mouse
over or click on its tray icon. To monitor the messages of the
Explorer system tray I disabled xoblite's built-in system tray,
disabled the hiding of the Explorer taskbar etc at startup, and then
ran xoblite on top of Explorer. And lo and behold, Windows 7 does
indeed behave quite different compared to Windows Vista!!!
To avoid formatting issues, here's the table in both PNG and TXT format:
http://xoblite.net/TrayMessages.png
http://xoblite.net/TrayMessages.txt
Windows XP behaves the same way as Windows Vista when version=0 and
version=3, and for obvious reasons does not support version=4.
Windows 2000 behaves the same way as Windows XP/Vista when version=0
and version=3, except that is does not forward X clicks.
If you're interested, the *box (=xoblite/bbLean/boxCore/bb4win/etc)
plugin is available at http://xoblite.net/TraySnooper.dll , if you
want the source code please send me an email, asking politely ;)
BR//Karl -> qwilk
----------
> On 14 jan 2009, at 01.25, Neil Santos wrote:
>
>> Has anybody tried Windows 7 yet? I'm anxious to find out how much
>> work it would take to make shell reps work flawlessly on it.
>
> Well, I think I've found one change in Windows 7 Beta compared to
> Windows Vista:
>
> As you know, a wallpaper is (usually) set by a call to
> SystemParametersInfo using the SPI_SETDESKWALLPAPER input parameter
> (see http://msdn.microsoft.com/en-us/library/ms724947.aspx ).
> Starting with the Windows 7 Beta, a classic old-school desktop
> window ("DesktopBackgroundClass") no longer seems to be "notified"
> of wallpaper changes in the good old fashion way, i.e. by triggering
> a regular WM_PAINT repainting of the window. However, following a
> call to SystemParametersInfo, a WM_SETTINGCHANGE message is
> broadcasted to all top-level windows to notify them of the change,
> and this can be used to trigger the repainting of the classic
> desktop window. Here's an abbreviated example:
>
> ----------
>
> case WM_PAINT:
> {
> PAINTSTRUCT ps;
> HDC hdc = BeginPaint(hwnd, &ps);
> PaintDesktop(hdc);
> EndPaint(hwnd, &ps);
> }
>
> case WM_SETTINGCHANGE:
> {
> if (wParam == SPI_SETDESKWALLPAPER)
> {
> if (operatingSystemVersion >= OSVERSION_WIN7)
> InvalidateRect(hDesktopWnd, NULL, false);
> }
> }
>
> ----------
>
> BR//Karl -> qwilk
>
>
> __________________________________________________
> Subscription options and archive:
> http://www.freelists.org/list/shell-coding
>
__________________________________________________
Subscription options and archive:
http://www.freelists.org/list/shell-coding