Другое С/С++ Вопрос - Ответ

Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Кто сможет помочь, почему не может установится хук, выводит мне: Ошибка установки хука: 1428, запускаю от имени администратора, антивируса нету, в чем может быть проблема? мб настройка проекта
C++:
#include <Windows.h>
#include <iostream>
#include <string>

using namespace std;

LRESULT CALLBACK HookProcedure(int nCode, WPARAM wParam, LPARAM lParam)
{
    if (nCode == HSHELL_WINDOWCREATED)
    {
        HWND hwnd = (HWND)lParam;
        char title[1024];
        GetWindowTextA(hwnd, title, sizeof(title));
        cout << "Создано новое окно: " << title << endl;
    }

    return CallNextHookEx(NULL, nCode, wParam, lParam);
}

int main()
{
    // Устанавливаем глобальный хук на создание окон
    HHOOK hook = SetWindowsHookEx(WH_SHELL, HookProcedure, NULL, 0);
    if (hook == NULL)
    {
        cout << "Ошибка установки хука: " << GetLastError() << endl;
        return 1;
    }

    // Ожидаем нажатия клавиши
    cout << "Хук установлен. Нажмите любую клавишу для выхода." << endl;
    cin.get();

    // Отключаем хук
    UnhookWindowsHookEx(hook);

    return 0;
}

другие хуки работают, особенно те которые не требуют прав администратора, к примеру этот код работает
C++:
#include <Windows.h>
#include <iostream>
#include <string>

using namespace std;

LRESULT CALLBACK HookProcedure(int nCode, WPARAM wParam, LPARAM lParam)
{
    if (nCode == HC_ACTION)
    {
        switch (wParam)
        {
            case WM_LBUTTONDOWN:
                cout << "Нажата левая кнопка мыши" << endl;
                break;
            case WM_LBUTTONUP:
                cout << "Отпущена левая кнопка мыши" << endl;
                break;
            case WM_RBUTTONDOWN:
                cout << "Нажата правая кнопка мыши" << endl;
                break;
            case WM_RBUTTONUP:
                cout << "Отпущена правая кнопка мыши" << endl;
                break;
            case WM_MBUTTONDOWN:
                cout << "Нажата средняя кнопка мыши" << endl;
                break;
            case WM_MBUTTONUP:
                cout << "Отпущена средняя кнопка мыши" << endl;
                break;
            default:
                break;
        }
    }

    return CallNextHookEx(NULL, nCode, wParam, lParam);
}

int main()
{
    // Запускаем процесс
    STARTUPINFO si = { sizeof(si) };
    PROCESS_INFORMATION pi;
    if (!CreateProcess(L"C:\\Windows\\notepad.exe", NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
    {
        cout << "Ошибка запуска процесса: " << GetLastError() << endl;
        return 1;
    }

    // Устанавливаем глобальный хук на процесс
    HHOOK hook = SetWindowsHookEx(WH_MOUSE_LL, HookProcedure, NULL, 0);
    if (hook == NULL)
    {
        cout << "Ошибка установки хука: " << GetLastError() << endl;
        return 1;
    }

    // Ожидаем завершения процесса
    WaitForSingleObject(pi.hProcess, INFINITE);

    // Отключаем хук
    UnhookWindowsHookEx(hook);

    // Закрываем дескрипторы процесса и потока
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);

    return 0;
}
😒😢
 

ARMOR

kjor32 is legend
Модератор
4,846
6,101
Кто сможет помочь, почему не может установится хук, выводит мне: Ошибка установки хука: 1428, запускаю от имени администратора, антивируса нету, в чем может быть проблема? мб настройка проекта
C++:
#include <Windows.h>
#include <iostream>
#include <string>

using namespace std;

LRESULT CALLBACK HookProcedure(int nCode, WPARAM wParam, LPARAM lParam)
{
    if (nCode == HSHELL_WINDOWCREATED)
    {
        HWND hwnd = (HWND)lParam;
        char title[1024];
        GetWindowTextA(hwnd, title, sizeof(title));
        cout << "Создано новое окно: " << title << endl;
    }

    return CallNextHookEx(NULL, nCode, wParam, lParam);
}

int main()
{
    // Устанавливаем глобальный хук на создание окон
    HHOOK hook = SetWindowsHookEx(WH_SHELL, HookProcedure, NULL, 0);
    if (hook == NULL)
    {
        cout << "Ошибка установки хука: " << GetLastError() << endl;
        return 1;
    }

    // Ожидаем нажатия клавиши
    cout << "Хук установлен. Нажмите любую клавишу для выхода." << endl;
    cin.get();

    // Отключаем хук
    UnhookWindowsHookEx(hook);

    return 0;
}

другие хуки работают, особенно те которые не требуют прав администратора, к примеру этот код работает
C++:
#include <Windows.h>
#include <iostream>
#include <string>

using namespace std;

LRESULT CALLBACK HookProcedure(int nCode, WPARAM wParam, LPARAM lParam)
{
    if (nCode == HC_ACTION)
    {
        switch (wParam)
        {
            case WM_LBUTTONDOWN:
                cout << "Нажата левая кнопка мыши" << endl;
                break;
            case WM_LBUTTONUP:
                cout << "Отпущена левая кнопка мыши" << endl;
                break;
            case WM_RBUTTONDOWN:
                cout << "Нажата правая кнопка мыши" << endl;
                break;
            case WM_RBUTTONUP:
                cout << "Отпущена правая кнопка мыши" << endl;
                break;
            case WM_MBUTTONDOWN:
                cout << "Нажата средняя кнопка мыши" << endl;
                break;
            case WM_MBUTTONUP:
                cout << "Отпущена средняя кнопка мыши" << endl;
                break;
            default:
                break;
        }
    }

    return CallNextHookEx(NULL, nCode, wParam, lParam);
}

int main()
{
    // Запускаем процесс
    STARTUPINFO si = { sizeof(si) };
    PROCESS_INFORMATION pi;
    if (!CreateProcess(L"C:\\Windows\\notepad.exe", NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
    {
        cout << "Ошибка запуска процесса: " << GetLastError() << endl;
        return 1;
    }

    // Устанавливаем глобальный хук на процесс
    HHOOK hook = SetWindowsHookEx(WH_MOUSE_LL, HookProcedure, NULL, 0);
    if (hook == NULL)
    {
        cout << "Ошибка установки хука: " << GetLastError() << endl;
        return 1;
    }

    // Ожидаем завершения процесса
    WaitForSingleObject(pi.hProcess, INFINITE);

    // Отключаем хук
    UnhookWindowsHookEx(hook);

    // Закрываем дескрипторы процесса и потока
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);

    return 0;
}
😒😢
Я конечно не уверен, но почему у тебя HWND это просто скащеный lParam? HWND является же первым аргументом wndProc'а
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Я конечно не уверен, но почему у тебя HWND это просто скащеный lParam? HWND является же первым аргументом wndProc'а
это не решает проблему


C++:
#include <Windows.h>
#include <iostream>
#include <string>

using namespace std;

HHOOK hHook;

LRESULT CALLBACK HookProcedure(int nCode, WPARAM wParam, LPARAM lParam)
{
    cout << "Хук продус" << endl;
    if (nCode == HCBT_CREATEWND)
    {
        HWND hwnd = (HWND)wParam;
        char title[1024];
        GetWindowTextA(hwnd, title, sizeof(title));
        cout << "Создано новое окно: " << title << endl;
    }

    return CallNextHookEx(hHook, nCode, wParam, lParam);
}

int main()
{
    // Устанавливаем глобальный хук на создание окон
    hHook = SetWindowsHookEx(WH_CBT, (HOOKPROC)HookProcedure, NULL, GetCurrentThreadId());
    if (hHook == NULL)
    {
        cout << "Ошибка установки хука: " << GetLastError() << endl;
        return 1;
    }

    // Ожидаем нажатия клавиши
    cout << "Хук установлен. Нажмите любую клавишу для выхода." << endl;
    cin.get();

    // Отключаем хук
    UnhookWindowsHookEx(hHook);

    return 0;
}
изменил прогу, теперь при запуске проги, пишет что хук установлен, только при запуске программ ничего не выводится в консоль, и отладочная строчка не появляется cout << "Хук продус" << endl;
 
Последнее редактирование:

Young123

Новичок
10
0
Как выделить активные кнопки в ImGui?
То есть когда я нажимаю на кнопку она становится другого цвета, типо активная, нажимаю второй раз она уже не другого цвета, то есть не активная
 

korsarsan

Участник
79
27
Знает кто как поправить, с помощью plugin sdk хочу вывести значение патронов в обойме, но вы выводит -0, что не так ?
C++:
CPed* pPedSelf = FindPlayerPed();
            char Barr[50];
            sprintf(Barr, "%d", pPedSelf->m_aWeapons->m_nAmmoInClip);
            pRender->DrawString(pRender->pHPFont, Barr, { 1535 ,668, 1 }, 25, g_Config.g_Style.vecTheme[ImGuiCol_HP], true);
 

Musaigen

abobusnik
Проверенный
1,585
1,309
Знает кто как поправить, с помощью plugin sdk хочу вывести значение патронов в обойме, но вы выводит -0, что не так ?
C++:
CPed* pPedSelf = FindPlayerPed();
            char Barr[50];
            sprintf(Barr, "%d", pPedSelf->m_aWeapons->m_nAmmoInClip);
            pRender->DrawString(pRender->pHPFont, Barr, { 1535 ,668, 1 }, 25, g_Config.g_Style.vecTheme[ImGuiCol_HP], true);
m_aWeapons это массив как бы
 
  • Нравится
Реакции: korsarsan и ARMOR

ARMOR

kjor32 is legend
Модератор
4,846
6,101
Знает кто как поправить, с помощью plugin sdk хочу вывести значение патронов в обойме, но вы выводит -0, что не так ?
C++:
CPed* pPedSelf = FindPlayerPed();
            char Barr[50];
            sprintf(Barr, "%d", pPedSelf->m_aWeapons->m_nAmmoInClip);
            pRender->DrawString(pRender->pHPFont, Barr, { 1535 ,668, 1 }, 25, g_Config.g_Style.vecTheme[ImGuiCol_HP], true);
C++:
CPed* Ped = FindPlayerPed();
char weaponSlot = Ped->m_nActiveWeaponSlot;
CWeapon* Weapon = Ped->m_aWeapons;
int ammoInClip = Weapon[weaponSlot].m_nAmmoInClip;
 
  • Влюблен
  • Нравится
Реакции: korsarsan и Z3roKwq
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
это не решает проблему


C++:
#include <Windows.h>
#include <iostream>
#include <string>

using namespace std;

HHOOK hHook;

LRESULT CALLBACK HookProcedure(int nCode, WPARAM wParam, LPARAM lParam)
{
    cout << "Хук продус" << endl;
    if (nCode == HCBT_CREATEWND)
    {
        HWND hwnd = (HWND)wParam;
        char title[1024];
        GetWindowTextA(hwnd, title, sizeof(title));
        cout << "Создано новое окно: " << title << endl;
    }

    return CallNextHookEx(hHook, nCode, wParam, lParam);
}

int main()
{
    // Устанавливаем глобальный хук на создание окон
    hHook = SetWindowsHookEx(WH_CBT, (HOOKPROC)HookProcedure, NULL, GetCurrentThreadId());
    if (hHook == NULL)
    {
        cout << "Ошибка установки хука: " << GetLastError() << endl;
        return 1;
    }

    // Ожидаем нажатия клавиши
    cout << "Хук установлен. Нажмите любую клавишу для выхода." << endl;
    cin.get();

    // Отключаем хук
    UnhookWindowsHookEx(hHook);

    return 0;
}
изменил прогу, теперь при запуске проги, пишет что хук установлен, только при запуске программ ничего не выводится в консоль, и отладочная строчка не появляется cout << "Хук продус" << endl;
ап
 
  • Грустно
Реакции: Dmitry Code
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Это у тебя консоль? Там вроде есть фигня, что с консолями такое криво работает.
да консоль, мне нужна хоть как-то проверить работу этого, использую пока консоль
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Сделай приложение Win32
все так же
C++:
#include <Windows.h>
#include <string>

using namespace std;

HHOOK hHook;
HWND hListBox;

void Debug(const char* message)
{
    std::string errorMsg = std::string(message) + std::to_string(GetLastError());
    SendMessageA(hListBox, LB_ADDSTRING, 0, (LPARAM)errorMsg.c_str());
}

LRESULT CALLBACK HookProcedure(int nCode, WPARAM wParam, LPARAM lParam)
{
    if (nCode == HCBT_CREATEWND)
    {
        HWND hwnd = (HWND)wParam;
        char title[1024];
        GetWindowTextA(hwnd, title, sizeof(title));
        SendMessageA(hListBox, LB_ADDSTRING, 0, (LPARAM)title);
    }

    return CallNextHookEx(hHook, nCode, wParam, lParam);
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    HWND hWnd = CreateWindowEx(0, L"ListBox", L"f", WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_VSCROLL | LBS_NOTIFY, 100, 100, 400, 300, NULL, NULL, hInstance, NULL);
    if (hWnd == NULL)
    {
        Debug("Ошибка создания окна: ");
        return 1;
    }

    hListBox = hWnd;

    hHook = SetWindowsHookEx(WH_CBT, HookProcedure, NULL, GetCurrentThreadId());
    if (hHook == NULL)
    {
        Debug("Ошибка установки хука: ");
        return 1;
    }

    Debug("Все ок: ");

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


    UnhookWindowsHookEx(hHook);

    return 0;
}
 

_doomsday_

Новичок
15
3
InputText вместо кириллицы выводит цифры и символы
Кириллические глифы в подгрузке шрифта есть (шрифт стандартный), WM_CHAR менял
В чем еще может быть проблема?
 

Digger Man

Любитель Linux
Модератор
1,629
1,124
InputText вместо кириллицы выводит цифры и символы
Кириллические глифы в подгрузке шрифта есть (шрифт стандартный), WM_CHAR менял
В чем еще может быть проблема?
кодировка мб не та стоит?
SetConsoleOutputCP(65001);
 
  • Нравится
Реакции: Savok

Dark_Knight

Me, me and me.
Друг
4,067
2,080
кодировка мб не та стоит?
SetConsoleOutputCP(65001);
Это имгуи. Чуть твой пример не катит)
InputText вместо кириллицы выводит цифры и символы
Кириллические глифы в подгрузке шрифта есть (шрифт стандартный), WM_CHAR менял
В чем еще может быть проблема?
Имгуи не анси работает, а с Utf8, точнее wchar
 
  • Нравится
Реакции: Z3roKwq