gpt4 book ai didi

C++ 返回 float

转载 作者:行者123 更新时间:2023-11-30 02:47:28 24 4
gpt4 key购买 nike

我为游戏创建 API。

我的问题:我想从内存中读取一个浮点值。

结果( Cheat Engine )100

我的 API 结果:0.00000

extern "C" __declspec(dllexport) float samp_health()
{
hwnd = FindWindow(NULL, L"MyGame");
GetWindowThreadProcessId(hwnd, &pid);
HANDLE phandle = OpenProcess(PROCESS_VM_READ, false, pid);
float value = 0;
ReadProcessMemory(phandle, (float*)(PlayerPointer + HealthOffset), &value, 4, NULL);
CloseHandle(phandle);
return value;
}

怎么了?

最佳答案

有了这条线,

HANDLE phandle = OpenProcess(PROCESS_VM_READ, false, pid);

您需要检查失败。

在接下来的一行中,

ReadProcessMemory(phandle, (float*)(PlayerPointer + HealthOffset), &value, 4, NULL);

假设 ReadProcessMemory 按照参数粗略指示的方式工作,PlayerPointer 需要是 phandle 标识的进程中的有效指针,如果 HealthOffset 是以字节为单位的偏移量,则 PlayerPointer 需要是指向字节的指针。

很可能不是。


读取进程内存通常不是进程间通信的好方法。

这里有一些替代方案:

  • 不要做进程通信,做线程什么的。

  • 使用 Windows COM 技术。

  • 使用 Windows 邮筒。

  • 使用 Windows 窗口消息(例如 WM_DATA)。

  • 使用套接字。

  • 使用文件。

  • 使用管道。

几乎任何东西,只是不能直接访问进程内存。


总而言之,主要问题是使用了太低的抽象级别。

关于C++ 返回 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22738612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com