Código:
#include <vdmdbg.h>
struct TProcessEnumData16{
char* Name;
bool Running;
};
BOOL WINAPI ProcessVDMs( DWORD, DWORD, LPARAM );
BOOL WINAPI ProcessTasks( DWORD, WORD, WORD, PSZ, PSZ, LPARAM );
BOOL WINAPI
ProcessVDMs(DWORD dwProcessId, DWORD dwAttrib, LPARAM PE)
{
VDMEnumTaskWOWEx(dwProcessId, (TASKENUMPROCEX)ProcessTasks, PE);
return ((TProcessEnumData16*)PE)->Running;
}
BOOL WINAPI
ProcessTasks(DWORD dwThreadId, WORD hMod16, WORD hTask16, PSZ pszModName, PSZ pszFileName, LPARAM PE)
{
if(strstr(strupr(pszFileName), strupr(((TProcessEnumData16*)PE)->Name)))
return ((TProcessEnumData16*)PE)->Running = true;
return false;
}
//---------------------------------------------------------------------------
IsRunning16(char* Name)
{
TProcessEnumData16 PE = {Name,0};
VDMEnumProcessWOW((PROCESSENUMPROC)ProcessVDMs, (LPARAM)&PE);
return PE.Running;
}
Saludos.