Skocz do zawartości

Zablokowane Pasek


ALT

Rekomendowane odpowiedzi

Hmmm... NIE bardzo wiem czy jest taki, ale mam kod z C++ do ukrywania paska. Może ktoś na szybko zrobi z tego DLL?

#include <string>
#define WIN32_LEAN_AND_MEAN
#include <windows.h>


// dane okna
std::string g_strKlasaOkna = "od0dogk_TaskbarHider_Window";
HWND g_hwndOkno = NULL;

// dane o pasku zadań
HWND g_hwndPasekZadan = NULL;
bool g_bWidocznyPasekZadan;


//------------------- procedura zdarzeniowa okna------------------------

LRESULT CALLBACK WindowEventProc(HWND hWindow, UINT uMsg,
                                WPARAM wParam, LPARAM lParam)
{
  switch (uMsg)
  {
        case WM_DESTROY:
              // odkrywamy pasek zadań
              ShowWindow (g_hwndPasekZadan, SW_SHOW);

              // kończymy program
              PostQuitMessage (0);
              return 0;

        case WM_LBUTTONDOWN:
              // zmieniamy stan widoczności na przeciwny
              g_bWidocznyPasekZadan = !g_bWidocznyPasekZadan;

              // pokazujemy/ukrywamy pasek zadań
              ShowWindow (g_hwndPasekZadan,
                          g_bWidocznyPasekZadan ? SW_SHOW : SW_HIDE);

              // uaktywniamy własne okno i każemy je odrysować,
              // by pokazała się informacja
              SetFocus (hWindow);
              InvalidateRect (hWindow, NULL, true);

              return 0;

        case WM_PAINT:
        {
              PAINTSTRUCT ps;
              HDC hdcOkno;
              RECT rcObszarKlienta;

              // pobieramy obszar klienta naszego okna
              GetClientRect (hWindow, &rcObszarKlienta);

              // formatujemy napis
              std::string strNapis = "Pasek zadań jest ";
              strNapis += (g_bWidocznyPasekZadan ?
                          "WIDOCZNY" : "NIEWIDOCZNY");

              // rysujemy napis informujący
              hdcOkno = BeginPaint(hWindow, &ps);
              DrawText (hdcOkno, strNapis.c_str(),
                        (int) strNapis.length(),
                         &rcObszarKlienta,
                         DT_SINGLELINE | DT_CENTER | DT_VCENTER);
              EndPaint (hWindow, &ps);

              return 0;
        }
  }

  return DefWindowProc(hWindow, uMsg, wParam, lParam);
}


//----------------------- funkcja WinMain()----------------------------

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nCmdShow)
{
  /* rejestrujemy klasę okna */

  WNDCLASSEX KlasaOkna;

  // wypełniamy strukturę WNDCLASSEX
  ZeroMemory (&KlasaOkna, sizeof(WNDCLASSEX));
  KlasaOkna.cbSize = sizeof(WNDCLASSEX);
  KlasaOkna.hInstance = hInstance;
  KlasaOkna.lpfnWndProc = WindowEventProc;
  KlasaOkna.lpszClassName = g_strKlasaOkna.c_str();
  KlasaOkna.hCursor = LoadCursor(NULL, IDC_ARROW);
  KlasaOkna.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  KlasaOkna.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);

  // rejestrujemy klasę okna
  RegisterClassEx (&KlasaOkna);


  /* tworzymy okno */

  // tworzymy okno funkcją CreateWindowEx
  g_hwndOkno = CreateWindowEx(WS_EX_TOOLWINDOW,
                              g_strKlasaOkna.c_str(),
                              "Ukrywacz paska zadań",                   WS_OVERLAPPED | WS_BORDER
                              | WS_CAPTION | WS_SYSMENU,
                              CW_USEDEFAULT,
                              CW_USEDEFAULT,
                              250,
                              50,                                       NULL,                                                         NULL,                                                             hInstance,
                              NULL);

  // pokazujemy nasze okno
  ShowWindow (g_hwndOkno, nCmdShow);


  /* uzyskujemy okno paska zadań */

  // wywołujemy FindWindow(), by znaleźć uchwyt
  g_hwndPasekZadan = FindWindow("Shell_TrayWnd", NULL);

  // pobieramy stan widoczności paska (zapewne jest widoczny,
  // ale ostrożność nie zaszkodzi :D)
  g_bWidocznyPasekZadan = (IsWindowVisible(g_hwndPasekZadan) != FALSE);


  /* pętla komunikatów */

  MSG msgKomunikat;
  while (GetMessage(&msgKomunikat, NULL, 0, 0))
  {
        TranslateMessage (&msgKomunikat);
        DispatchMessage (&msgKomunikat);
  }

  // zwracamy kod wyjścia
  return static_cast<int>(msgKomunikat.wParam);
}

 

BTw, Kod wprost skopiowany z Tutoriala.

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...