Подведи собственные итоги года совместно с YOUGAME и забери ценные призы! Перейти

Хук внд прока

  • Автор темы Автор темы Zzzetych
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
9 Дек 2017
Сообщения
80
Реакции
15
как мне узнавать HWND окна по названию процесса? p2c code в ответы плс без тупых и примитивных вопросов, просто нужно.
 
Ну вообще можно немножко поговнокодить..

Создадим удобную структурку:
C++:
Expand Collapse Copy
struct HandleData
{
    DWORD process_id;
    HWND window_handle;
};

Теперь вспомним о такой функции как EnumWindows

У нее в первом аргументе тайпдеф на каллбек поиска окна.

Сделаем же его:

Код:
Expand Collapse Copy
BOOL CALLBACK EnumWindowsCallback(HWND handle, LPARAM lParam)
{
    HandleData& data = *(HandleData*)lParam;
    DWORD pid = 0;
    GetWindowThreadProcessId(handle, &pid );
    if (data.process_id != process_id)
        return TRUE;
    data.window_handle = handle;
    return FALSE;
}

и теперь получим окно по пиду процесса:

Код:
Expand Collapse Copy
HWND GetWindow(DWORD process_id)
{
    HandleData data;
    data.process_id = process_id;
    data.window_handle = 0;
    EnumWindows(EnumWindowsCallback, (LPARAM)&data);
    return data.window_handle;
}

Используем:

C++:
Expand Collapse Copy
HWND hWnd = GetWindow(FindPID("csgo.exe"));

Код:
Expand Collapse Copy
DWORD FindPID(LPCSTR Name)
{
    while (true)
    {
        //create process snapshot
        HANDLE procSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
        PROCESSENTRY32 procInfo = { 0 };
        procInfo.dwSize = sizeof(PROCESSENTRY32);

        //parse process list
        while (Process32Next(procSnap, &procInfo))
        {
            if (!strcmp(Name, procInfo.szExeFile))
            {
                //process found
                CloseHandle(procSnap);
                return procInfo.th32ProcessID;
            }
        }

        Sleep(80);
    }
}

ну и остается только проверить
KaFVT3CJTvOjcAaQka0Cpg.jpeg

NUCHLo46QCus_nEhWfsetA.jpeg


Как то так, я старался ¯\_(ツ)_/¯
 
Последнее редактирование:
Ну вообще можно немножко поговнокодить..

Создадим удобную структурку:
C++:
Expand Collapse Copy
struct HandleData
{
    DWORD process_id;
    HWND window_handle;
};

Теперь вспомним о такой функции как EnumWindows

У нее в первом аргументе тайпдеф на каллбек поиска окна.

Сделаем же его:

Код:
Expand Collapse Copy
BOOL CALLBACK EnumWindowsCallback(HWND handle, LPARAM lParam)
{
    HandleData& data = *(HandleData*)lParam;
    DWORD pid = 0;
    GetWindowThreadProcessId(handle, &pid );
    if (data.process_id != process_id)
        return TRUE;
    data.window_handle = handle;
    return FALSE;
}

и теперь получим окно по пиду процесса:

Код:
Expand Collapse Copy
HWND GetWindow(DWORD process_id)
{
    HandleData data;
    data.process_id = process_id;
    data.window_handle = 0;
    EnumWindows(EnumWindowsCallback, (LPARAM)&data);
    return data.window_handle;
}

Используем:

C++:
Expand Collapse Copy
HWND hWnd = GetWindow(FindPID("csgo.exe"));

Код:
Expand Collapse Copy
DWORD FindPID(LPCSTR Name)
{
    while (true)
    {
        //create process snapshot
        HANDLE procSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
        PROCESSENTRY32 procInfo = { 0 };
        procInfo.dwSize = sizeof(PROCESSENTRY32);

        //parse process list
        while (Process32Next(procSnap, &procInfo))
        {
            if (!strcmp(Name, procInfo.szExeFile))
            {
                //process found
                CloseHandle(procSnap);
                return procInfo.th32ProcessID;
            }
        }

        Sleep(80);
    }
}

ну и остается только проверить
KaFVT3CJTvOjcAaQka0Cpg.jpeg

NUCHLo46QCus_nEhWfsetA.jpeg


Как то так, я старался ¯\_(ツ)_/¯
Сэнк ю, дюде!
 
Назад
Сверху Снизу