我确实在论坛和 MSDN 上看了一会儿,但似乎无法找到我的问题所在。我相信这对于像我这样的非菜鸟来说很简单。我正在尝试编译一个简单的程序,它不喜欢我的代码。
#include "pch.h"
#include <iostream>
#include <Windows.h>
using namespace std;
int main()
{
int score = 80000;
HWND hwnd = FindWindowA(NULL, "3D Pinball for Windows - Space Cadet");
if (hwnd == NULL)
{
cout << "Cant find window";
Sleep(3000);
}
else {
DWORD ProcID;
GetWindowThreadProcessId(hwnd, &ProcID);
HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcID);
cout << "Found it: "; cout << ProcID;
WriteProcessMemory(handle, (LPVOID)00F7D9CC, &score, sizeof(score), 0);
Sleep(5000);
}
return 0;
}
大部分都是我胡乱编造的,因此乱七八糟的代码毫无意义。我正在尝试更改弹球游戏的分数,我从 Cheat Engine 获得了内存地址,我可以更改那里的地址值并在玩游戏时观察它的变化。它实际上只改变了一次比赛的比分,而且再也没有改变过,我也想不通。但我的主要目标是尝试用我自己的程序而不是 Cheat Engine 来改变分数。我想主要使用 Cheat Engine 来查找地址。无论如何,地址是 LPVOID 之后的字符部分。 E2474、C3688、C2660 是出现的错误。如果能帮助我摆脱困境,我们将不胜感激。
最佳答案
改变
(LPVOID)00F7D9CC
到
static_cast<LPVOID>(0x00F7D9CC)
它应该可以解决您的编译问题。
关于c++ - LPVOID 问题不接受内存地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54127635/