PuTTY + Aero

15 komentarzy

Jak wiadomo Vista i jej pochodne mają syf zwany Aero Glass. Jest tak nieużyteczny, że postanowiłem opublikować poprawkę, która zamieni cały terminal PuTTY w Aero (widoczne na poniższym screenshocie, także o tym pisał Coffeeredev)

PuTTY z Aero
Taki efekt można otrzymać poprzez modyfikację źródeł PuTTy'iego.

  1. Otwieramy plik WINDOWS\window.c
  2. Odnajdujemy poniższy fragment:
     
    #include <mmsystem.h>
     
    Pod nim piszemy:
    #include <dwmapi.h>
    static void extend_glass_frame(HWND);
  3. Odnajdujemy:
    case WM_CREATE:
    I zamieniamy na:
          case WM_CREATE:
          case WM_DWMCOMPOSITIONCHANGED:
            extend_glass_frame(hwnd);
  4. Następnie na samym końcu pliku deklarujemy funkcję extend_glass_frame:
    static void extend_glass_frame(HWND hwnd)
    {
        BOOL bEnabled = FALSE;
        HRESULT (WINAPI *pDwmIsCompositionEnabled)(BOOL*) = NULL;
        HRESULT (WINAPI *pDwmExtendFrameIntoClientArea)(HWND, MARGINS*) = NULL;
        HMODULE hmDwmapi = LoadLibrary("dwmapi.dll");
        if (hmDwmapi) {
    	pDwmIsCompositionEnabled =
    	    GetProcAddress(hmDwmapi, "DwmIsCompositionEnabled");
    	pDwmExtendFrameIntoClientArea =
    	    GetProcAddress(hmDwmapi, "DwmExtendFrameIntoClientArea");
        }
        if (pDwmIsCompositionEnabled) {
    	pDwmIsCompositionEnabled(&bEnabled);
        }
        if (bEnabled && pDwmExtendFrameIntoClientArea) {
    	MARGINS margins = {-1, 0, 0, 0};
    	pDwmExtendFrameIntoClientArea(hwnd, &margins);
        }
        FreeLibrary(hmDwmapi);
    }

Viola! Teraz kompilujemy i cieszymy się z naszego PuTTY z obsługą Aero Glass ;)
Dla leniwych: skompilowana wersja PuTTY+ z poprawką dla Aero