无法将字符 [9] 转换为字符*



我是游戏黑客的新手,从一个教程开始,该教程给了我源代码。一旦我理解了它的作用,我就尝试编译,出现了3个相同的错误:

无法将char[9]转换为char*(错误n.C2664(

错误指变量ProcessNameModuleName

即使我知道C++的基本原理,我在指针方面也总是遇到困难。

对错误感兴趣的函数是以下2:

bool AttachProcess(char *ProcessName) {
HANDLE hPID = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
PROCESSENTRY32 procEntry;
procEntry.dwSize = sizeof(procEntry);

const WCHAR* procNameChar;
int nChars = MultiByteToWideChar(CP_ACP, 0, ProcessName, -1, NULL, 0);
procNameChar = new WCHAR[nChars];
MultiByteToWideChar(CP_ACP, 0, ProcessName, -1, (LPWSTR)procNameChar, nChars);

do
if (!wcscmp(procEntry.szExeFile, procNameChar))
{
this->dwPID = procEntry.th32ProcessID;
CloseHandle(hPID);
this->hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, this->dwPID);
return true;
}
while (Process32Next(hPID, &procEntry));

CloseHandle(hPID);
return false;
}

MODULEENTRY32 GetModule(char* ModuleName)
{
HANDLE hModule = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID);
MODULEENTRY32 mEntry;
mEntry.dwSize = sizeof(mEntry);

const WCHAR* modNameChar;
int nChars = MultiByteToWideChar(CP_ACP, 0, ModuleName, -1, NULL, 0);
modNameChar = new WCHAR[nChars];
MultiByteToWideChar(CP_ACP, 0, ModuleName, -1, (LPWSTR)modNameChar, nChars);

do
if (!wcscmp(mEntry.szModule, modNameChar))
{
CloseHandle(hModule);
return mEntry;
}
while (Module32Next(hModule, &mEntry));

CloseHandle(hModule);
mEntry.modBaseAddr = 0x0;
return mEntry;
}

我记得这里的那些功能:

MemoryManager()
{
this->hProcess = NULL;
this->dwPID = NULL;
try {
if (!AttachProcess("csgo.exe")) throw 1;
this->ClientDLL = GetModule("client.dll");
this->EngineDLL = GetModule("engine.dll");
//and so on

发生此错误的原因是您试图将字符串文字(const char[](传递给一个函数,该函数需要指向非常量字符数组(char *(的指针。

因为你从不修改ProcessName的内容,所以你应该更改

bool AttachProcess(char *ProcessName)

//                 VVVVV
bool AttachProcess(const char *ProcessName)

我铸造了"csgo.exe"engine.dll";以及";客户端.dll":

if (!AttachProcess(const_cast<char*>("csgo.exe"))) throw 1;
this->ClientDLL = GetModule(const_cast<char*>("client.dll"));
this->EngineDLL = GetModule(const_cast<char*>("engine.dll"));

最新更新