Piszę malutki programik pod jedną grę (coś w rodzaju bota).
Potrzebuję pobrać stringa z odpowiedniej wartości w pamięci aplikacji. Robię więc tak:
string MemReadString(int address)
{
HWND hwnd;
DWORD ProcessID;
HANDLE hInstance;
SIZE_T nbr;
char bufor[255];
hwnd = FindWindow('Nazwa_mojej_aplikacji', NULL);
GetWindowThreadProcessId(hwnd, &ProcessID);
hInstance = OpenProcess(PROCESS_VM_READ, false, ProcessID);
if(hwnd)
{
ReadProcessMemory(hInstance, (void*)address, &bufor, sizeof(char), 0);
}
return bufor;
}
Odczytuje stringa z pamięci w ten sposób:
Zmienna = MemReadString(0x546CE0);
Wszystko fajnie, działa gdy ten string będzie w jakiejś naturalnej postaci, np. MojTekst123, ładnie zczyta wartość.
Jednak gdy string będzie wyglądał w postaci takiej (bo w takiej też może istnieć, z różnymi znakami): Moj_Specjalny_Tekst_~!@#$%^&*()-_=+[{]};:'"|<,>.?/
To już nie wyświetli poprawnie tylko dostaje jakieś krzaczki...
Jak pobrać poprawnie stringa, który może posiadać znaki specjalne?