Я пытался создать программу, которая завершит процесс, используя имя процесса. При поиске API CreateToolhelp32Snapshot, Process32First, OpenProcess и TerminateProcess помогут мне в выполнении этой программы.
Но при компиляции я получил ошибку "ошибка C2664: 'strcmp': невозможно преобразовать параметр 1 из 'WCHAR [260]' в 'const char *'" В этой части "if (strcmp(pEntry.szExeFile, имя файла) == 0)"
Любое предложение о том, как решить эту ошибку?
Спасибо!
#include "stdafx.h"
#include <windows.h>
#include <process.h>
#include <Tlhelp32.h>
#include <winbase.h>
#include <string.h>
void killProcessByName(const char *filename)
{
HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL);
PROCESSENTRY32 pEntry;
pEntry.dwSize = sizeof (pEntry);
BOOL hRes = Process32First(hSnapShot, &pEntry);
while (hRes)
{
if (strcmp(pEntry.szExeFile, filename) == 0)
{
HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, 0,
(DWORD) pEntry.th32ProcessID);
if (hProcess != NULL)
{
TerminateProcess(hProcess, 9);
CloseHandle(hProcess);
}
}
hRes = Process32Next(hSnapShot, &pEntry);
}
CloseHandle(hSnapShot);
}
int main()
{
killProcessByName("calc.exe");
return 0;
}
WCHAR *
вconst char *
. Метрическая тонна просмотров (многие из них на этом собственном сайте, stackoverflow.com, как насчет этого?). Читать их. - person Sam Varshavchik   schedule 21.12.2018