C/C++結束指定進程
起因:ZZ室友最近沉迷喫雞,沒日沒夜的和他的小夥伴開黑,嚴重影響到了寢室靜謐,美好,熱愛“學習”的氛圍!突發奇想,給他電腦發個程序,當喫雞喫到一半的時候,自動結束喫雞進程,豈不美哉,哈哈,純屬說笑,並不會真的搞事情,開機自動運行沒有加上,但是這個需求在腦海中形成想實現,正好鞏固一下win32編程,廢話不多,上代碼!
#include"stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <TlHelp32.h>
#include <stdlib.h>
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) //隱藏運行的控制檯窗口
int Kill_Pro(TCHAR Kill_Name[]) //功能函數。參數是進程名
{
while(1){ //死循環爲了一直獲取當前系統正在運行的進程
// 爲進程的所有線程拍個快照
HANDLE hSnapshort = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if( hSnapshort==INVALID_HANDLE_VALUE )
{
printf("CreateToolhelp32Snapshot調用失敗!\n");
return -1;
}
// 獲得線程列表
PROCESSENTRY32 stcProcessInfo;
stcProcessInfo.dwSize = sizeof(stcProcessInfo);
BOOL bRet = Process32First(hSnapshort, &stcProcessInfo);
while (bRet)
{
if(strcmp(stcProcessInfo.szExeFile,Kill_Name)==0)
{
Sleep(2000); //等待時間
HANDLE hProcess = ::OpenProcess(PROCESS_TERMINATE,FALSE,stcProcessInfo.th32ProcessID); //獲取進程句柄
::TerminateProcess(hProcess,0); //結束進程
CloseHandle(hProcess);
}
bRet = Process32Next(hSnapshort, &stcProcessInfo);
}
CloseHandle(hSnapshort);
}
return 0;
}
int main() //主函數
{
Kill_Pro("editplus.exe");
return 0;
}
提醒:宿舍和諧還是很重要的,切勿傷了和氣!