C/C++結束指定進程

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;  
}
提醒:宿舍和諧還是很重要的,切勿傷了和氣!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章