本文实例讲述了VC使用TerminateProcess结束进程的方法,分享给大家供大家参考。具体实现方法如下:

复制代码 代码如下:

int KillProcess(LPCSTR pszClassName, LPCSTR
pszWindowTitle)
{
    HANDLE hProcessHandle;
    ULONG nProcessID;
    HWND TheWindow;
    TheWindow = ::FindWindow( NULL, pszWindowTitle );
    ::GetWindowThreadProcessId( TheWindow, &nProcessID );
    hProcessHandle = ::OpenProcess( PROCESS_TERMINATE, FALSE,
nProcessID );
    return ::TerminateProcess( hProcessHandle, 4 );
}
 
void CZxDlg::OnOK()
{
 // TODO: Add extra validation here
// CDialog::OnOK();
 KillProcess("radmin.exe","Radmin Viewer")
}

void CZxDlg::OnButton1()
{
HANDLE   hSnapShot   =   ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); 
 if(hSnapShot   ==   0) 
    return; 
 PROCESSENTRY32   thePE; 
 thePE.dwSize   =   sizeof(PROCESSENTRY32);
 //遍历正在运行的第一个系统进程
 bool   Status   =   Process32First(hSnapShot,&thePE); 
 bool   bHaveFlag   =   false; 
 DWORD  ProcessID = 0;
 while(Status) 
 {
  //遍历正在运行的下一个系统进程
  Status   =   Process32Next(hSnapShot,&thePE);
  CString jincheng ="qq.exe";
  jincheng.MakeLower();
  //找到相应的进程 **.exe
  if(0 == _tcscmp(thePE.szExeFile,_T(jincheng)))
  { 
   bHaveFlag   =   true; 
   ProcessID   =   thePE.th32ProcessID;
   //结束指定的进程 ProcessID
   if(!TerminateProcess(OpenProcess (PROCESS_TERMINATE||PROCESS_QUERY_INFORMATION,false,ProcessID),0)) 
   {
    AfxMessageBox("无法终止指定的进程!",MB_ICONWARNING||MB_OK);
   }
   break; 
  } 
 } 
 CloseHandle(hSnapShot);
}

自己改良后的代码如下:

复制代码 代码如下:

void kill(CString jin)
{
HANDLE   hSnapShot   =   ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); 
 if(hSnapShot   ==   0) 
    return; 
 PROCESSENTRY32   thePE; 
 thePE.dwSize   =   sizeof(PROCESSENTRY32);
 //遍历正在运行的第一个系统进程
 bool   Status   =   Process32First(hSnapShot,&thePE); 
 bool   bHaveFlag   =   false; 
 DWORD  ProcessID = 0;
 while(Status) 
 {
  //遍历正在运行的下一个系统进程
  Status   =   Process32Next(hSnapShot,&thePE);
  CString jincheng ;
jincheng=thePE.szExeFile;
jincheng.MakeLower();
  //找到相应的进程 **.exe
  if ( jincheng == jin)
  { 
   bHaveFlag   =   true; 
   ProcessID   =   thePE.th32ProcessID; 
    //AfxMessageBox(thePE.szExeFile,MB_ICONWARNING||MB_OK);
   //结束指定的进程 ProcessID
   if(!TerminateProcess(OpenProcess (PROCESS_TERMINATE||PROCESS_QUERY_INFORMATION,false,ProcessID),0)) 
   {
    AfxMessageBox("无法终止指定的进程!",MB_ICONWARNING||MB_OK);
   }
   break; 
  } 
 } 
 CloseHandle(hSnapShot);
}

希望本文所述对大家的VC程序设计有所帮助。

VC使用TerminateProcess结束进程实例相关推荐

  1. 使用ExitProcess()结束本进程、TerminateProcess 结束进程

    进程只是提供了一段地址空间和内核对象,其运行时通过在其地址空间内的主线程来体现的.当主线程的进入点函数返回时,进程也就随之结束.这种进程的终止方式是进程的正常退出,进程中的所有线程资源都能够得到正确的 ...

  2. 使用ExitProcess()结束本进程,TerminateProcess()结束进程

    进程只是提供了一段地址空间和内核对象,其运行时通过在其地址空间内的主线程来体现的.当主线程的进入点函数返回时,进程也就随之结束.这种进程的终止方式是进程的正常退出,进程中的所有线程资源都能够得到正确的 ...

  3. 使用TerminateProcess结束进程时,错误码为5的解决方法

    最近在win7上,VS2010开发环境中,写一个守护进程的程序,程序内容:发现目标进程挂起后,将其kill,然后重启. 可是,遇到了一个问题,就是在使用TerminateProcess进行kill目标 ...

  4. c/c++ 结束进程的方法

    1.使用ExitProcess()结束进程      进程只是提供了一段地址空间和内核对象,其运行时通过在其地址空间内的主线程来体现的.当主线程的进入点函数返回时,进程也就随之结束.这种进程的终止方式 ...

  5. VC/MFC 强制结束当前进程

    最近接手一个MFC老项目,Bug太多,主线程退出的时候,也不管子线程死活,直接退出,导致子线程又去访问那些被释放的资源,结果程序无法关闭,或者导致进程在后台驻留了. 这里提供一种简单粗暴的方法: // ...

  6. python 单一进程实例 实现

    目录 一.说明 二.单进程实例实现 2.1 Linux平台实现--使用标准库fcntl 2.2 通用平台实现--使用第三方库portalocker 三.单例模式实现 3.1 单例模式示例代码 3.2  ...

  7. Win64 驱动内核编程-26.强制结束进程

    强制结束进程 依然已经走到驱动这一层了,那么通常结束掉一个进程不是什么难的事情.同时因为win64 位的各种保护,导致大家慢慢的已经不敢HOOK了,当然这指的是产品.作为学习和破解的话当然可以尝试各种 ...

  8. C#各种结束进程的方法详细介绍

    Process类的CloseMainWindow, Kill, Close Process.CloseMainWindow是GUI程序的最友好结束方式,从名字上就可以看出来它是通过结束主窗体,相当于用 ...

  9. 获取进程列表和结束进程

    uses TLHelp32, Classes; type TProcessInfo = record     ExeFile: string;     ProcessID: DWORD; end; p ...

最新文章

  1. Windows+Nginx+IIS做图片分布式存储详细步骤
  2. relu函数_从 ReLU 到 GELU,一文概览神经网络的激活函数
  3. 上传书籍进度信息到服务器...,使用HttpWebRequest实现大文件上传资料.pdf
  4. python 控件id_查看控件id的工具
  5. pythonselenium上传图片视频_如何用selenium、python上传文件(图片)
  6. 在线YAML转XML工具
  7. Entity Framework 无法加载指定的元数据资源。
  8. Magnet for mac(窗口布局辅助工具)
  9. SpringBoot-Dubbo入门教程
  10. python程序设计应用教程pdf_python程序设计教程
  11. 空间索引 - Redis/MongoDB/PostgreSQL/MySQL空间索引使用报告
  12. 耳机插入电脑插孔后只有一边有声音
  13. 神经网络浅讲:从神经元到深度学习
  14. 企业微信好友无上限,私域流量即将迎来春天?
  15. 【在线教育直播】直播很卡怎么办?
  16. 实时计算与SparkSteaming的对比
  17. 【166】VS2022调试通过海康人脸抓拍SDK的C++代码
  18. 是否能任取前序、中序和后序两种序列建立二叉树?
  19. Windows下打开命令窗口几种方式
  20. PostgreSQL日期加减

热门文章

  1. 简易可逆加密解密算法
  2. centos关闭防火墙命令(centos重启防火墙命令)
  3. Xsehll连接Linux进入VIm后不能鼠标右键复制
  4. JS合并两个数组的方法分享
  5. Quartus中D触发器入门
  6. 自由能 亥姆霍兹自由能(Helmholtz free energy)和吉布斯自由能(Gibbs free energy)等概念;IC50/Ki/Kd与结合自由能ΔG关系
  7. Excel数据分析函数
  8. Idea连接数据库,并生成pojo
  9. js的语法和java相同_js的一些有别于java语法
  10. VC++计算文件和文件夹的大小(附源码)