Function 通过函数传递值

Function 通过函数传递值,function,visual-c++,c++-cli,readprocessmemory,Function,Visual C++,C++ Cli,Readprocessmemory,我正在尝试在VisualC++中为ReadProcessMemory和WriteProcessMemory创建自己的函数,这样我就不必每次创建新函数调用时都输入所有信息。此项目是Windows窗体。问题出在这里 void Read(DWORD Add, int Value); private: System::Void btnP1Money_Click_1(System::Object^ sender, System::EventArgs^e) { int BigMoney = 10

我正在尝试在VisualC++中为ReadProcessMemory和WriteProcessMemory创建自己的函数,这样我就不必每次创建新函数调用时都输入所有信息。此项目是Windows窗体。问题出在这里

void Read(DWORD Add, int Value);

private: System::Void btnP1Money_Click_1(System::Object^  sender, System::EventArgs^e) 
{   
int BigMoney = 100000;
int GetMoneyValue;
DWORD MonAddr = 0x180A6C8;

Read(MonAddr, GetMoneyValue);
}


void Read(DWORD Add, int Value)
{
HWND window = FindWindow(0, _T("Process Window Name"));
DWORD pID = NULL;
DWORD base = dwGetModuleBaseAddress(pID, _T("Game.exe"));
HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pID);
GetWindowThreadProcessId(window, &pID);

ReadProcessMemory(handle, (LPCVOID)(base+Add), &Value, 4, NULL);
}
游戏中的值是500,而Read()返回的值是0。不知道我做错了什么。我只是不想每次单击按钮并勾选复选框等时都必须在Read()函数中定义所有内容


谢谢

您需要通过引用传递,否则函数将获得自己的
int
副本:

void Read(DWORD Add, int& Value);
或者,您可以返回以下值:

int Read(DWORD Add, int Value)
{
  ....
  return Value;
}

您应该将
Read
标题修改为

void Read(DWORD Add, int& Value)
我已经写了一个小例子,它是有效的。确保检查变量的内容,而不是地址

void Read(int& Value)
{
    Value++;
}

int main(array<System::String ^> ^args)
{
    int GetMoneyValue = 5;
    Read(GetMoneyValue);

    Console::WriteLine(GetMoneyValue);
    //6;
    return 0;
}
void读取(int和Value)
{
值++;
}
int main(数组^args)
{
int GetMoneyValue=5;
读取(GetMoneyValue);
控制台::WriteLine(GetMoneyValue);
//6;
返回0;
}

感谢您的回复。是的,我以前试图返回值,但一直得到0。我试图通过引用来做,但它产生了一些奇怪的结果。我做了无效读取(DWORD Add、int和Value);和void Read(DWORD Add,int&Value){…},但它在第一次按钮单击时生成1752315632的输出,在第二次按钮单击时生成44293792的输出。。它们不是随机的,所以我想我可能传递错了。我已经读过关于通过引用传递值的内容,但这是我第一次尝试。谢谢你的回复。这正是我对标题所做的。我将函数declare更改为void Read(DWORD Add、int和Value);函数定义上的头是void Read(DWORD Add,int&Value){//same code},它产生了那些奇怪的结果。你知道为什么吗?感谢WinBase.h
BOOL WINAPI ReadProcessMemory(\uuuuu在句柄hProcess中,\uuuu在LPCVOID lpBaseAddress中,\uuuu在计数部分(nSize,*lpNumberOfBytesRead)LPVOID lpBuffer中,\uuuu在大小上,\uuuu在大小上,\uuuu在选择大小上*lpnumberbytesread)