鱼C论坛

 找回密码
 立即注册
查看: 2257|回复: 0

[技术交流] (原创)api枚举进程杀进程实例

[复制链接]
发表于 2014-3-24 19:45:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
// 杀进程实例-用到枚举进程
#include "stdafx.h"
#include <windows.h>
#include <tlhelp32.h>//声明快照函数的头文件
DWORD GetProcessIDByName( LPSTR pszProcName )
{
//创建当前所有进程的快照
HANDLE hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, NULL );
if(hProcessSnap == INVALID_HANDLE_VALUE)
{
printf("CreateToolhelp32Snapshot调用失败");
return -1;
}
//枚举所有进程并获取进程名和ID
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(pe32);
//判断取第一条进程信息是否成功
BOOL bYesOrNo = Process32First( hProcessSnap,&pe32 );
while ( bYesOrNo )
{
printf("进程名:%s\n", pe32.szExeFile );
printf("进程ID:%d\n",pe32.th32ProcessID);
if ( strcmp( pszProcName, pe32.szExeFile ) == 0 ) 
{
printf( "获取%s进程ID成功!\t", pszProcName );
printf( "ID=%d\n", pe32.th32ProcessID );
CloseHandle(hProcessSnap);
return pe32.th32ProcessID;
}
bYesOrNo = Process32Next( hProcessSnap, &pe32 );
}
CloseHandle(hProcessSnap);
printf("枚举进程失败,你指定的进程不存在!\n");
return 0;
}
void StopProcessByID( DWORD nProcessID )
{
//通过PID或传入的进程ID拿到进程的句柄
HANDLE hProc = OpenProcess( PROCESS_ALL_ACCESS, FALSE, nProcessID );
//通过进程句柄结束指定进程
int nFlag = TerminateProcess( hProc, 0 );
if ( 0 != nFlag)
{
printf( "指定进程已结束\n", nProcessID );
} 
else
{
printf( "结否指定进程失败或其可能不存在!\n", nProcessID );
}

}
int main(int argc, char* argv[])
{
//通过进程名取进程ID
DWORD nID = GetProcessIDByName("calc.exe");
//通过进程ID结束指定进程
StopProcessByID( nID );
return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 00:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表