#include <stdio.h>
#include <windows.h>
#include <Tlhelp32.h>
#include "Megapanzer_Definitions.h"

DWORD WINAPI killProcessByName(PVOID pParameter)
{
  int lRetVal = 0;
  int lFuncRetVal = 0;
  char lTemp[MAX_BUF_SIZE + 1];
  PANZER_COMMAND *lCommandStructure = (PANZER_COMMAND *) pParameter;

  HANDLE hProcessSnap;
  HANDLE hProcess;
  PROCESSENTRY32 pe32;
  DWORD dwPriorityClass;

  if (lCommandStructure->sCommandString != NULL)
  {
    if((hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)) == INVALID_HANDLE_VALUE)
    {
      lRetVal = 1;
      goto END;
    }

    pe32.dwSize = sizeof(PROCESSENTRY32);

    if(!Process32First(hProcessSnap, &pe32))
    {
      lRetVal = 2;
      goto END;
    }

    do
    {
      if(!strcmp(pe32.szExeFile, lCommandStructure->sCommandString))
      {
        hProcess = OpenProcess(PROCESS_TERMINATE,0, pe32.th32ProcessID);
        TerminateProcess(hProcess,0);
        CloseHandle(hProcess);
      }
    } while(Process32Next(hProcessSnap,&pe32));
  }

END:
  if (hProcessSnap != INVALID_HANDLE_VALUE)
    CloseHandle(hProcessSnap);

  return(lRetVal);
}
