当前位置: 首页 > 编程笔记 >

VC使用TerminateProcess结束进程实例

周睿范
2023-03-14
本文向大家介绍VC使用TerminateProcess结束进程实例,包括了VC使用TerminateProcess结束进程实例的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了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++进度条process Bar的用法实例,包括了VC++进度条process Bar的用法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了VC进度条的用法实例,分享给大家供大家参考。具体实现代码如下: 希望本文所述对大家的VC++程序设计有所帮助。

  • 本文向大家介绍unity3d 结束协程,包括了unity3d 结束协程的使用技巧和注意事项,需要的朋友参考一下 示例 通常,您将协程设计为在达到某些目标时自然终止。 要从协程“内部”阻止协程,您不能像在普通功能中早退一样简单地“返回”。而是使用yield break。 您还可以强制脚本启动的所有协程在完成之前停止。 从调用方停止特定协程的方法因启动方式而异。 如果您通过字符串名称启动了协程: 那么

  • 线程的结束 现有问题 当内核线程终止时,会发生什么?如果就按目前的实现,我们会发现线程所执行的函数末尾会触发 Exception::InstructionPageFault 而终止,其中访问的的地址 stval = 0。 这是因为内核线程在执行完 entry_point 所指向的函数后会返回到 ra 指向的地址,而我们没有为其赋初值(初值为 0)。此时,程序就会尝试跳转到 0x0 地址,而显然它是

  • 本文向大家介绍VC++中进程与多进程管理的方法详解,包括了VC++中进程与多进程管理的方法详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了VC++中进程与多进程管理的方法,分享给大家供大家参考。具体方法分析如下: 摘要: 本文主要介绍了多任务管理中的多进程管理技术,对进程的互斥运行、子进程的创建与结束等作了较详细的阐述。 关键词: VC++6.0;进程;环境变量;子进程 进程   进程

  • 与目标虚拟机断开连接,地址:'127.0.0.1:60359',传输:'socket' 进程结束,退出代码为130(被信号2:SIGINT中断) 我哪里错了?我能做什么?Intellij的更新没有改变任何事情。

  • 这个问题可以更好地表述为:如何在不阻塞的情况下检测InputStream中的EOF 我有一个java程序,它可以直接从System.in中获取输入(不使用扫描器),我也可以像任何程序一样直接将输入管道输入到java程序中。但是,当我将输入管道输入到程序中时,程序继续运行。这个想法是,如果输入被管道输入,就停止程序,但如果我们在等待用户输入,就保持程序运行。 编辑:无论出于什么原因,我花了大约2个小