void TForm1::GetFileName(char *emFILE_NAME, char *emFILE_PATH)
{
char emFILE_DRIVE[_MAX_DRIVE];
char emFILE_DIR[_MAX_DIR];
char emFILE_FNAME[_MAX_FNAME];
char emFILE_EXT[_MAX_EXT];
_splitpath(emFILE_PATH, emFILE_DRIVE, emFILE_DIR, emFILE_FNAME, emFILE_EXT);
lstrcpy(emFILE_NAME, emFILE_FNAME);
lstrcat(emFILE_NAME, emFILE_EXT);
return;
}
//----------------------------------------------------------
bool TForm1::GetProcess(DWORD *PID, char *EXENAME) // PID - identyfikator procesu
{
char FileName[MAX_PATH];
HANDLE snapshot;
PROCESSENTRY32 processinfo;
*PID = 0;
processinfo.dwSize = sizeof(processinfo);
snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (snapshot == NULL) return false;
bool status = Process32First(snapshot, &processinfo);
while(status)
{
GetFileName(FileName, processinfo.szExeFile);
if(lstrcmpi(EXENAME, FileName) == 0)
{
*PID = processinfo.th32ProcessID;
CloseHandle(snapshot);
return true;
}
status = Process32Next(snapshot, &processinfo);
}
CloseHandle(snapshot);
return false;
}
//---------------------------------------------------------
BOOL TForm1::GetMemory(DWORD emPROCESS_ID, DWORD emMEM_ADDRESS, LPVOID emMEM_BUF, DWORD emMEM_MAX)
{
HANDLE emHPROCESS;
if((emHPROCESS = OpenProcess(PROCESS_ALL_ACCESS, TRUE, emPROCESS_ID)) == NULL)
{
ShowMessage("OpenProcess");
return false;
}
if(!ReadProcessMemory(emHPROCESS, (LPVOID)emMEM_ADDRESS, emMEM_BUF, emMEM_MAX, NULL))
{
CloseHandle(emHPROCESS);
ShowMessage("ReadProcessMemory");
return false;
}
CloseHandle(emHPROCESS);
return true;
}
//----------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
DWORD PROCESSID;
int Count;
// GetProcess pobiera numer procesu w oparciu o jego nazwę
if(!GetProcess(&PROCESSID, "mój program.exe"))
{
ShowMessage("Proces nie istnieje")
return;
}
/* GetMemory pobiera numer prpocesu ze zmiennej PROCESSID,
adres, bufor, maksymalna długość adresu */
if(!GetMemory(PROCESSID, 0xCFEDE0, (LPVOID)&Count, 4))
{
ShowMessage("Błąd odczytu");
return;
}
Edit1->Text = IntToStr(Count);
}
//---------------------------------------------------------