BOOL CheckProcessModule(DWORD dwPID)
{
  HANDLE hModuleSnap = INVALID_HANDLE_VALUE;
  MODULEENTRY32 me32;
  hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL,dwPID);
  if (hModuleSnap == INVALID_HANDLE_VALUE)
  {
    printf("CreateToolhelp32Snapshot(of modules)");
    return ( FALSE );
  }
// この辺読みとれなかった
  return (TRUE);
}

BOOL GetProcessList()
{
  HANDLE hProcessSnapshot;
  HANDLE hProcess;
  PROCESSENTRY32 pe32;
  hProcessSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
  if (hProcessSnapshot == INVALID_HANDLE_VALUE)
  {
    MessageBox(NULL,_TEXT("CreateToolhelp32Snapshot"),_TEXT("ERROR"),MB_OK);
    return( FALSE );
  }
  pe32.dwSize = sizeof( PROCESSENTRY32 );
  if ( Process32First(hProcessSnapshot,&pe32))
  {
    MessageBox(NULL,_TEXT("Process32First"),_TEXT("ERROR"),MB_OK);
    return ( FALSE );
  }

  do
  {
    hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe32.th32ProcessID);
    if (hProcess != NULL){
      if(CheckProcessModule(pe32.th32ProcessID)){
        InjectHook(pe32);
      }
    }
  } while( Process32Next(hProcessSnapshot,&pe32));
  CloseHandle(hProcessSnapshot);
  return ( TRUE );
}

void main()
{
  MessageBox(NULL,_TEXT("Start simurator and hit return key!!"),_TEXT("Simulator Injector"),MB_OK);
  GetProcessList();
}




