appo icon

Kill process [Win32 API] (4 version)

appo | PRO | 12/27/13 04:45:26 PM UTC | 0 ⭐ | 696 👁️ | Never ⏰ | []
C++ |

1.91 KB

|

None

|

0 👍

/

0 👎

#pragma hdrstop
#pragma argsused
#pragma comment (lib, "psapi.lib")
 
#include <tchar.h>
#include <stdio.h>
#include "windows.h"
#include <psapi.h>
#include <stdio.h>
 
DWORD GetProcessIdByName(char* lpProcessName)
{
    // Obtain a list of the process.
    DWORD aProcesses[1024], cbNeeded, cProcesses;
    unsigned int i;
    if (!EnumProcesses (aProcesses, sizeof(aProcesses), &cbNeeded ))
  return 0;
    
    cProcesses = cbNeeded / sizeof(DWORD);
    char szProcessName[MAX_PATH] = "unknown";
    for (i = 0; i < cProcesses; i++)
    {
  HANDLE hProcess = OpenProcess (PROCESS_QUERY_INFORMATION |
  PROCESS_VM_READ,
  FALSE, aProcesses[i]);
  // Получить имя процесса.
  if ( hProcess )
  {
    HMODULE hMod;
    DWORD cbNeeded;
    if ( EnumProcessModules (hProcess, &hMod, sizeof(hMod),
    &cbNeeded) )
    {
    GetModuleBaseName (hProcess, hMod, szProcessName,
        sizeof(szProcessName));
    }
  }
 
  if(!lstrcmpi (szProcessName, lpProcessName))
  {
    CloseHandle (hProcess);
    return aProcesses[i];
  }
  CloseHandle (hProcess);
    }
    return NULL;
}
void Kill(char *szxProcName)
{
    HANDLE hProcess;
           // Get the process ID by name
            DWORD dwProcID = GetProcessIdByName(szxProcName);
// Открываем процесс для его закрытия
  hProcess = OpenProcess( PROCESS_TERMINATE, FALSE, dwProcID );
  if ( (INVALID_HANDLE_VALUE == hProcess) || (NULL == hProcess) )
   printf( "OpenProcess() failed, err = %lu\n", GetLastError() ); // Ошибка
  else
  {
   // kill process
   if ( ! TerminateProcess( hProcess, (DWORD) -1 ) )
    printf( "TerminateProcess() failed, err = %lu\n", GetLastError() );// Ошибка
   else
    puts( "killed." );
// Закрываем дескриптор
   CloseHandle( hProcess );
  }
}
void main()
{
 
    Kill("notepad++.exe");
    system("pause");
}
 
// Coded by Appo //

Comments