|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
- }
复制代码
|
|