#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