Board logo

标题: Win32进程创建、进程快照、进程终止用例(2) [打印本页]

作者: yuyang911220    时间: 2017-1-25 18:47     标题: Win32进程创建、进程快照、进程终止用例(2)

终止进程:
终止进程也就是结束程序的执行,让它从内存中卸载。进程终止的原因可能有 4 种:
(1)主线程的入口函数返回。
(2)进程中一个线程调用了 ExitProcess 函数,该函数只能终止当前进程。
(3)此进程中的所有线程都结束了。
(4)其他进程中的一个线程调用了 TerminateProcess 函数。
复制代码
终止当前进程:
void ExitProcess(UINT uExitCode); // 参数uExitCode 为此程序的退出代码。
终止其他进程:
BOOL TerminateProcess(
    HANDLE hProcess, // 要结束的进程(目标进程)的句柄
    UINT uExitCode  // 指定目标进程的退出代码,你可以使用GetExitCodeProcess 取得一个进程的退出代码
);
  在对一个进程操作前, 必须首先取得该进程的进程句柄。 CreateProcess 函数创建进程后会返回一个进程句柄,而对于一个已经存在的进程,只能使用 OpenProcess 函数来取得这个进程
的访问权限,函数用法如下:
 HANDLE OpenProcess(
    DWORD dwDesiredAccess, // 想得到的访问权限,可以是PROCESS_ALL_ACCESS等
    BOOL bInheritHandle,   // 指定返回的句柄是否可以被继承
    DWORD dwProcessId      // 指定要打开的进程的ID 号
  );
 一般使用下面的代码来终止一个进程:
 BOOL TerminateProcessFromId(DWORD dwId)
 {
    BOOL bRet = FALSE;
   // 打开目标进程,取得进程句柄
   HANDLE hProcess = ::OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwId);
   if(hProcess != NULL)
   { // 终止进程
    bRet = ::TerminateProcess(hProcess, 0);
   }
   CloseHandle(hProcess);
   return bRet;
}




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0