首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

Windows 程式設計:終止指定 EXE 程式(C++)

     編輯:關於C++

步驟

  1. 遍歷程式快照,比對名稱取得 PID。
  2. OpenProcess(PROCESS_TERMINATE, FALSE, pid) 取得控制代碼。
  3. TerminateProcess(hProcess, exitCode) 強制結束。
  4. CloseHandle 釋放資源。

程式碼

/* main.cpp
 * Created on: 2014.06.08
 * Author: Spike
 */
#include <iostream>
#include <string>
#include <map>
#include <windows.h>
#include <TlHelp32.h>
using namespace std;

bool terminateProcess(const string& name) {
    PROCESSENTRY32 pe32; pe32.dwSize = sizeof(pe32);
    HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (hSnap == INVALID_HANDLE_VALUE) return false;
    BOOL bRet = Process32First(hSnap, &pe32);
    while (bRet) {
        if (name == pe32.szExeFile) {
            HANDLE hProc = OpenProcess(PROCESS_TERMINATE, FALSE, pe32.th32ProcessID);
            if (hProc) {
                TerminateProcess(hProc, 0);
                CloseHandle(hProc);
                CloseHandle(hSnap);
                return true;
            }
        }
        bRet = Process32Next(hSnap, &pe32);
    }
    CloseHandle(hSnap);
    return false;
}

int main() {
    terminateProcess("Image.exe");
    return 0;
}

注意

  • 強制終止不會執行目標程式的解構函式/清理邏輯,可能導致資料遺失。
  • 建議先嘗試傳送 WM_CLOSE 或 CTRL_C_EVENT 讓程式優雅退出。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved