我已经得到进程名 CString str =sqlservr.exe
怎么结束它?

解决方案 »

  1.   

    强制结束进程可以使用TerminateProcess();函数
    由进程名获得进程句柄可以用GetModuleHandle();
      

  2.   

    void CMonitorCtrlDlg::KillProcess(CString path)
    {
        CListCtrl* pList = (CListCtrl*) GetDlgItem(IDC_TASKLIST);
    ASSERT(pList != NULL);
        int count = pList->GetItemCount();
    path.MakeLower();
    CString  ItemText=TEXT("");
    for(int i=0; i< count; i++)     //查找有该路径的项目
    {
            ItemText=pList->GetItemText(i,0);
            ItemText.MakeLower();
    if(path.Find(ItemText)>-1) //找到
    {
    ItemText=pList->GetItemText(i,1);
    DWORD dwProcessId = atoi(ItemText);    //将这个字符转换为整数
    HANDLE handle= OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwProcessId);
    TerminateProcess(handle,1);  //Kill Process
    }
    }
    if(i==count)  TRACE("没找到");
    }
      

  3.   

    用Process32First,Process32Next这两个函数遍历进程列表,找到匹配的进程,再用OpenProcess()取得进程句柄,最后根据这个进程句柄用TerminateProcess来关闭进程!