[shell-coding] Changes in Windows 7 compared to Vista

  • From: "Karl-Henrik Henriksson [qwilk]" <qwilk@xxxxxxxxxxx>
  • To: shell-coding@xxxxxxxxxxxxx
  • Date: Thu, 29 Jan 2009 00:19:21 +0100

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:
//www.freelists.org/list/shell-coding

Other related posts:

  • » [shell-coding] Changes in Windows 7 compared to Vista - Karl-Henrik Henriksson [qwilk]