我是菜鸟。
我想实现的功能是结束掉QQ.exe这个进程。
我的具体想法是 用enumprocesses 获得进程的PID,然后利用openprocess
获得进程的句柄,再利用EnumProcessModules获得进程模块的句柄
最后利用GetModuleBaseName 就可以获得模块的名称了。我预先定义好了
char to_be_terminated[]="QQ.exe"; 利用strcmp 函数 把模块的名称和QQ.exe比较
如果相同 则结束该模块所在的进程。 这样就把QQ.exe这个进程给结束了。
我用的是 cfree 编译器是MinGW
下面是代码
#include <windows.h>
#include <Psapi.h>
#include <string.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
DWORD processes_array[1024],processes_sumbytes;
int i,j,m;
HMODULE hmodule_array[1024];
LPDWORD sum_module_bytes;
LPTSTR base_name_buffer;
char to_be_terminated[]="QQ.exe";
EnumProcesses(processes_array,sizeof(processes_array),&processes_sumbytes);
for(i=0;i<processes_sumbytes/sizeof(processes_array);i++)
{
HANDLE processes_handle=OpenProcess(PROCESS_ALL_ACCESS,FALSE,processes_array[i]);
EnumProcessModules(processes_handle,hmodule_array,sizeof(hmodule_array),sum_module_bytes);
for(j=0;j<*(sum_module_bytes)/sizeof(HMODULE);j++)
{
GetModuleBaseName(processes_handle,hmodule_array[j],base_name_buffer,1024);
m=strcmp(to_be_terminated,base_name_buffer);
if(m=0)
TerminateProcess(processes_handle,0);
}
}
return 0 ;
}
编译后 没有错误 没有警告,不知道程序哪里出了问题了。
请大家就这个程序指点一二,谢谢!