왜 안되는지 이유를 모르겠어요


해당 코드입니다


#include <Windows.h>

#include<stack>

#include <iostream>

#include <cstdlib>

#include <csignal>


using namespace std;


void HideWindow();

void ShowWindow();

void ShowWindowAll();


stack<HWND> st = {};


char c;

HHOOK keyboardHook;

HHOOK mouseHook;


LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)

{

    if (nCode >= 0)

    {

        if (wParam == WM_XBUTTONDOWN)

        {

            MSLLHOOKSTRUCT* hookStruct = (MSLLHOOKSTRUCT*)lParam;

            if (hookStruct->mouseData == 0x20000)

            {

                cout << "key : " << hookStruct->mouseData << endl;

                HideWindow();

                return 1; // 여기로 이동

            }

            else if (hookStruct->mouseData == 0x10000)

            {

                ShowWindow();

                return 1;

            }

        }

    }

    return CallNextHookEx(mouseHook, nCode, wParam, lParam); // 이전으로 돌아가도록 변경

}


LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)

{

    if (nCode >= 0)

    {

        KBDLLHOOKSTRUCT* kbStruct = (KBDLLHOOKSTRUCT*)lParam;


        if (wParam == WM_KEYDOWN)

        {

            // F1 키를 누른 경우

            if (kbStruct->vkCode == VK_F1)

            {

                ShowWindowAll();

                return 1;

            }

            else

            {

                // 다른 키를 누른 경우에는 처리를 계속합니다.

                std::cout << "Key pressed: " << kbStruct->vkCode << std::endl;

            }

        }

    }

    // 후킹된 이벤트 처리를 계속합니다.

    return CallNextHookEx(keyboardHook, nCode, wParam, lParam);

}


void exitHandler(int signal)

{

    cout << "프로그램이 종료됩니다." << endl;

    Sleep(10000);

    exit(signal);

}


int main()

{

    ShowWindow(GetConsoleWindow(), SW_SHOW);

    keyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, NULL, 0);


    HINSTANCE hInstance = GetModuleHandle(NULL);

    mouseHook = SetWindowsHookEx(WH_MOUSE_LL, MouseProc, NULL, 0);

    if (mouseHook == NULL) {

        std::cerr << "Failed to install mouse hook!" << std::endl;

        return 1;

    }

    MSG msg;

    while (GetMessage(&msg, NULL, 0, 0))

    {

        TranslateMessage(&msg);

        DispatchMessage(&msg);

    }

    UnhookWindowsHookEx(keyboardHook);

    UnhookWindowsHookEx(mouseHook);

}


bool func(char* a)

{

    return strcmp(a, "Shell_TrayWnd")&& strcmp(a, "Progman");

}


void HideWindow()

{

    HWND hWnd;

    POINT point;


    GetCursorPos(&point);

    hWnd = WindowFromPoint(point);


    char clsName_v[256]; 

    HWND parent = GetParent(hWnd), parent2;

    while (1) {

        parent2 = GetParent(parent);

        if (parent2 == 0)

            break;

        parent = parent2;

    }


    if (parent != 0)

        hWnd = parent;


    GetClassNameA(hWnd, clsName_v, 256);

    std::cout << hWnd << "\n";

    std::cout << clsName_v << "\n";

    if (func(clsName_v))

    {

        st.push(hWnd);

        ShowWindow(hWnd, SW_HIDE);

    }

}


void ShowWindowAll()

{

    while (!st.empty())

    {

        ShowWindow();

    }

}


void ShowWindow()

{

    if (!st.empty())

    {

        ShowWindow(st.top(), SW_SHOW);

        st.pop();

    }

}