一段时间以来,我一直在做一个内存读写器,而我遇到了一些问题。
我制作了一个简单的Memory.h / Memory.cpp来处理内存调用。 我的Main.cpp调用了“ GetProcessID”和“ OpenProcess”。这一切都很好。 但是我决定将事情分解为多个cpp文件。
例如,我附加了一些代码。
Main.cpp:
#include <Windows.h>
#include <iostream>
#include "Other.h"
#include "Memory.h"
Using namespace std;
Memory Mem;
int main(){
Mem.GetProcessID(ProcessName); // Getting Process ID
cout << "Main.cpp ProcID : " << Mem.ProcID;
TestCall();
}
在此我得到了我期望的进程ID。 在Other.h中:
#include "Other.cpp"
void TestCall();
在Other.cpp中:
#include "Other.h"
#include "Memory.h"
#include <windows.h>
#include <iostream>
using namespace std;
Memory Mem1;
void TestCall()
{
cout << "Other.cpp ProcID: " << Mem1.ProcID;
}
我在控制台上都收到了两个提示,但是主显示ProcID,Other.cpp显示0,除非我也添加:
Mem1.GetProcessID(ProcessName);
to other.cpp。
有没有一种方法可以“共享”进程ID?我还将继续获取基本模块地址并打开一个句柄。这些也不是“共享的”。我真的不想打开2个句柄,2个基址调用等。
我尝试过的事情...
1)将其放入Memory.h:
class Memory{
Public:
DWORD ProcID;
}
万一有人在想...这是我的memory.h和memory.cpp
Memory.h(在公共类中)
DWORD GetProcessID(LPCTSTR ProcessName);
Memory.cpp
DWORD Memory::GetProcessID(LPCTSTR ProcessID)
{
HWND gWindow = FindWindow(NULL, ProcessID);
DWORD ProcIDBuffer;
GetWindowThreadProcessId(gWindow, &ProcIDBuffer);
return Memory::ProcID = ProcIDBuffer;
}
谢谢!
答案 0 :(得分:0)
一种方法:在other.cpp
中,更改:
Memory Mem1;
收件人:
extern Memory Mem;
然后更改:
Mem1.ProcID
收件人:
Mem.ProcID
但实际上,您应该read a good book