當前位置:編程學習大全網 - 源碼下載 - 怎麽用C語言寫壹個關閉後臺某進程的程序

怎麽用C語言寫壹個關閉後臺某進程的程序

//kill進程from名字

BOOL KillProcessFromName(LPCSTR lpProcessName)

{

//創建進程快照(TH32CS_SNAPPROCESS表示創建所有進程的快照)

HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

//PROCESSENTRY32進程快照的結構體

PROCESSENTRY32 pe;

//實例化後使用Process32First獲取第壹個快照的進程前必做的初始化操作

pe.dwSize = sizeof(PROCESSENTRY32);

//下面的IF效果同:

//if(hProcessSnap == INVALID_HANDLE_VALUE) 無效的句柄

if(!Process32First(hSnapShot,&pe))

{

return FALSE;

}

CString strProcessName = lpProcessName;

//將字符串轉換為小寫

strProcessName.MakeLower();

//如果句柄有效 則壹直獲取下壹個句柄循環下去

while (Process32Next(hSnapShot,&pe))

{

//pe.szExeFile獲取當前進程的可執行文件名稱

CString scTmp = pe.szExeFile;

//將可執行文件名稱所有英文字母修改為小寫

scTmp.MakeLower();

//比較當前進程的可執行文件名稱和傳遞進來的文件名稱是否相同

//相同的話Compare返回0

if(!scTmp.Compare(strProcessName))

{

//從快照進程中獲取該進程的PID(即任務管理器中的PID)

DWORD dwProcessID = pe.th32ProcessID;

HANDLE hProcess = ::OpenProcess(PROCESS_TERMINATE,FALSE,dwProcessID);

::TerminateProcess(hProcess,0);

CloseHandle(hProcess);

return TRUE;

}

scTmp.ReleaseBuffer();

}

strProcessName.ReleaseBuffer();

return FALSE;

}

以殺死qq程序為例,我們可以通過下列方式:

KillProcessFromName("qq.exe");

  • 上一篇:Ay標題源代碼
  • 下一篇:推薦java零基礎的入門書籍有哪些
  • copyright 2024編程學習大全網