Służy do manipulowania pamięcią procesu. Metoda open wybiera okno z odpowiednią nazwą, read służy do odczytu wartości z danego adresu a write zapisuje daną wartość pod dany adres. Ta klasa z założenia ma oferować dużo łatwiejsze i bezpieczniejsze manipulowanie pamięcią procesu niż używanie gołego WinApi. Choć z drugiej strony nie jestem pewien czy to nie jest przerost formy nad treścią. Zapraszam do oceny.
#include <windows.h>
class OneProcess
{
private:
DWORD process_id;
HANDLE handle;
HWND hwnd;
public:
template<typename type>
type Read(DWORD address)
{
if(hwnd)
{
type value_to_return;
ReadProcessMemory(handle, (LPVOID)address, &value_to_return,sizeof(type),0);
return value_to_return;
}
}
template<typename type>
void Write(DWORD address, type value_to_write)
{
WriteProcessMemory(handle, (LPVOID)address, &value_to_write,sizeof(type),0);
}
void Open(char window_name[])
{
hwnd=FindWindow(NULL, window_name);
if(hwnd)
{
GetWindowThreadProcessId(hwnd,&process_id);
handle=OpenProcess(PROCESS_ALL_ACCESS, false, process_id);
}
}
void Close()
{
CloseHandle(handle);
}
OneProcess(char window_name[])
{
Open(window_name);
}
OneProcess(){}
~OneProcess()
{
Close();
}
};