Wons' Blog

个人博客

Android程序猿


回首向来萧瑟处,也无风雨也无晴

Windows下C++程序终止进程

Windows下C++程序有多种方式可以关闭进程:

  1. 通过执行命令行程序,如taskkill等。
  2. 向进程发送关闭信号
  3. 通过Windows API来关闭进程,如TerminateProcess函数

以下函数通过调用TerminateProcess来关闭指定名称的进程。

bool kill_process(const char* lpszProcessName)
{
    unsigned int   pid = -1;
    bool    retval = true;

    if (lpszProcessName == NULL)
        return false;

    DWORD dwRet = 0;
    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    PROCESSENTRY32 processInfo;
    processInfo.dwSize = sizeof(PROCESSENTRY32);
    int flag = Process32First(hSnapshot, &processInfo);

    while (flag != 0)
    {
        if (strcmp(processInfo.szExeFile, lpszProcessName) == 0)
        {
            pid = processInfo.th32ProcessID;
            HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pid);

            if (TerminateProcess(hProcess, 0) != TRUE)
            {
                retval = false;
                break;
            }
        }

        flag = Process32Next(hSnapshot, &processInfo);
    }

    CloseHandle(hSnapshot);

    if (pid == -1)
        return false;

    return retval;
}
最近的文章

Windows下简单的互斥锁封装

在多线程编程中线程的互斥与同步尤为重要。Windows操作系统提供了不同的线程互斥同步机制:临界区、互斥锁、事件和信号量。以下为其中的互斥锁Mutex的封装类,为应用提供了简单的接口来操作互斥锁。#include <windows.h>class Mutex{private: HANDLE mutex;public: Mutex() { mutex = CreateMutex(NULL, FALSE, NULL); } ~Mutex() { CloseHandle(mute...…

WindowsC++Thread继续阅读
更早的文章

YV12转RGB

YUV,是一种颜色编码方法,是编译true-color颜色空间(color space)的种类,Y’UV, YUV, YCbCr,YPbPr等专有名词都可以称为YUV,彼此有重叠。“Y”表示明亮度(Luminance、Luma),“U”和“V”则是色度、浓度(Chrominance、Chroma),Y’UV, YUV, YCbCr, YPbPr常常有些混用的情况,其中YUV和Y’UV通常用来描述模拟信号,而相反的YCbCr与YPbPr则是用来描述数位的影像信号,例如在一些压缩格式内MPEG...…

YUVopencv继续阅读