Помогите новенькому в C++

Начинающий
Статус
Оффлайн
Регистрация
28 Мар 2019
Сообщения
3
Реакции[?]
0
Поинты[?]
0
Я новенький в c++ не понимаю как исправить эту ошибку (E0167 аргумент типа "const char *" несовместим с параметром типа "char *" и LPSTR)
пытался сделать экстернал sv_cheats bypass для старой ксс
заранее спасибо.
C++:
#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>
using namespace std;

DWORD GetModuleBase(LPSTR lpModuleName, DWORD dwProcessId)
{
    MODULEENTRY32 lpModuleEntry = { 0 };
    HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessId);
    if (!hSnapShot)    return NULL;
    lpModuleEntry.dwSize = sizeof(lpModuleEntry);
    BOOL bModule = Module32First(hSnapShot, &lpModuleEntry);
    while (bModule)
    {
        if (!strcmp(lpModuleEntry.szModule, lpModuleName))
        {
            CloseHandle(hSnapShot);
            return (DWORD)lpModuleEntry.modBaseAddr;
        }
        bModule = Module32Next(hSnapShot, &lpModuleEntry);
    }
    CloseHandle(hSnapShot);
    return NULL;
}

DWORD GetProcessByName(char* process_name) // тут была ошибка с hl2.exe я ее решил, но что же делать с engine.dll?
{
    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
    if (hSnapshot == INVALID_HANDLE_VALUE) return false;
    PROCESSENTRY32 pe = { 0 };
    pe.dwSize = sizeof(PROCESSENTRY32);

    if (Process32First(hSnapshot, &pe))
    {
        while (Process32Next(hSnapshot, &pe))
        {
            if (!lstrcmpi(pe.szExeFile, process_name))
            {
                DWORD pID = pe.th32ProcessID;
                CloseHandle(hSnapshot);
                return pID;
            }
        }
    }
    return FALSE;
}

int main()
{
    int Value = 1;
    DWORD pID = GetProcessByName("hl2.exe"); // тут ошибка const char*
    HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, 0, pID);
    DWORD dwEngine = GetModuleBase("engine.dll", pID); // а тут LPSTR
}

void SetColor(int ForgC)
{
    WORD wColor;

    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_SCREEN_BUFFER_INFO csbi;

    if (GetConsoleScreenBufferInfo(hStdOut, &csbi))
    {
        wColor = (csbi.wAttributes & 0xF0) + (ForgC & 0x0F);
        SetConsoleTextAttribute(hStdOut, wColor);
    }
    return;
}
 
Последнее редактирование:
Участник
Статус
Оффлайн
Регистрация
28 Янв 2019
Сообщения
552
Реакции[?]
192
Поинты[?]
1K
Код:
DWORD pID = GetProcessByName((char*)"hl2.exe");
HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, 0, pID);
DWORD dwEngine = GetModuleBase((LPSTR)"engine.dll", pID);
Как вариант. И мультибайтовую кодировку поставить, если не стоит.
 
Начинающий
Статус
Оффлайн
Регистрация
28 Мар 2019
Сообщения
3
Реакции[?]
0
Поинты[?]
0
Код:
DWORD pID = GetProcessByName((char*)"hl2.exe");
HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, 0, pID);
DWORD dwEngine = GetModuleBase((LPSTR)"engine.dll", pID);
Как вариант. И мультибайтовую кодировку поставить, если не стоит.
Моя ошибка была в GetProcessByName я ее пофиксил когда заново чекал код
а за GetModuleBase огромное тебе спасибо, все заработало прекрасно

проблема решена, тему можно закрыть.
 
Сверху Снизу