mfc如何彻底退出进程

mfc如何彻底退出进程,第1张

BOOL KillProcessFromName(CString strProcessName)  

{  

    //创建进程快照(TH32CS_SNAPPROCESS表示创建所有进程的快照)  

    HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);  

  

    //PROCESSENTRY32进程快照的结构体  

    PROCESSENTRY32 pe;  

  

    //实例化后使用Process32First获取第一个快照的进程前必做的初始化 *** 作  

    pedwSize = sizeof(PROCESSENTRY32);  

  

  

    //下面的IF效果同:  

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

    if(!Process32First(hSnapShot,&pe))  

    {  

        return FALSE;  

    }  

  

    //将字符串转换为小写  

    strProcessNameMakeLower();  

  

    //如果句柄有效  则一直获取下一个句柄循环下去  

    while (Process32Next(hSnapShot,&pe))  

    {  

  

        //peszExeFile获取当前进程的可执行文件名称  

        CString scTmp = peszExeFile;  

  

  

        //将可执行文件名称所有英文字母修改为小写  

        scTmpMakeLower();  

  

        //比较当前进程的可执行文件名称和传递进来的文件名称是否相同  

        //相同的话Compare返回0  

        if(!scTmpCompare(strProcessName))  

        {  

  

            //从快照进程中获取该进程的PID(即任务管理器中的PID)  

            DWORD dwProcessID = peth32ProcessID;  

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

            ::TerminateProcess(hProcess,0);  

            CloseHandle(hProcess);  

            return TRUE;  

        }  

        scTmpReleaseBuffer();  

    }  

    strProcessNameReleaseBuffer();  

    return FALSE;  

}

我推测可能的问题:

OnOK那个函数里面有 大数据量的循环,甚至是有死循环,请检查

建议如果处理大批量的数据的话,最好再启动一个线程来处理,作为工作者线程

界面那个UI线程就只更新界面就行了

以上就是关于mfc如何彻底退出进程全部的内容,包括:mfc如何彻底退出进程、MFC里面怎么从当前对话框退出、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9499348.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存