【发布时间】:2018-12-21 02:56:20
【问题描述】:
我一直在尝试创建一个程序,该程序将使用进程名称终止进程。 搜索后,API CreateToolhelp32Snapshot、Process32First、OpenProcess 和 TerminateProcess 将帮助我完成这个程序。
但是在编译时,我得到一个错误“error C2664: 'strcmp': cannot convert parameter 1 from 'WCHAR [260]' to 'const char *'” 关于这部分“if (strcmp(pEntry.szExeFile, filename) == 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;
}
【问题讨论】:
-
以下是如何解决此错误的建议:访问 www.google.com 并搜索如何将 a
WCHAR *转换为const char *。一公吨的点击量(其中很多都在这个自己的网站 stackoverflow.com 上,怎么样?)。阅读它们。