opencv---小知识记录

本文介绍了两种在C++中结束进程的方法。一种是通过ThreadDialog类在关闭对话框时终止内部线程,另一种是利用Windows API函数查找并结束指定名称的进程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结束进程

结束进程

在ThreadDialog中构建了两个进程,threadA和threadB。
在关闭ThreadDialog后,这两个进程都需要结束
代码如下:

void ThreadDialog::closeEvent(QCloseEvent *event){
    threadA.terminate();
    threadB.terminate();
    threadA.wait();
    threadB.wait();
    event->accept();
}

结束任务管理器中正在运行的exe文件

方式一:

头文件:

#include <QMainWindow>
#include<QThread>
#include<iostream>
#include<QString>
#include<QFileDialog>
#include<QMessageBox>
#include<opencv/cv.h>
#include<QTextCodec>
#include<QFont>
#include<opencv2/opencv.hpp>
#include <QApplication>
#include <QProcess>
#include <windef.h>
#include <tlhelp32.h>

main.cpp

#include "threaddialog.h"

void killProcess(QString ProcessName)
{
    bool result = false;
    QString str1;

    HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0) ;
    PROCESSENTRY32 pInfo;
    pInfo.dwSize = sizeof(pInfo);

    Process32First(hSnapShot, &pInfo);
    do
    {
        str1 = (QString::fromUtf16(reinterpret_cast<const unsigned short *>(pInfo.szExeFile)));
        if (str1 == ProcessName)
        {
            result = true;
            QString cmd;
            cmd = QString("taskkill /F /PID %1 /T").arg(pInfo.th32ProcessID);

            system(cmd.toLatin1());
        }
    } while(Process32Next(hSnapShot, &pInfo) );
    cout<<result<<endl;
}


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    ThreadDialog *threaddialog = new ThreadDialog;
    threaddialog->exec();

    killProcess("multiThread");

    return a.exec();
}

方式二
main.cpp

#include "threaddialog.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    ThreadDialog *threaddialog = new ThreadDialog;
    threaddialog->exec();

    //用于结束线程。如果multiThread.EXE在任务管理器中未关闭,便结束该程序
    QProcess process;
    process.execute("TASKKILL /IM multiThread.EXE /F");
    process.close();

    return a.exec();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值