熱點推薦:
您现在的位置: 電腦知識網 >> 操作系統 >> Windows系統管理 >> 正文

windows下進程是否啟動檢測

2013-11-11 21:47:43  來源: Windows系統管理 
    在最近做的一個項目中需要用到檢測進程狀態的功能在網上兜了半圈普遍介紹的方法有三種
   
    是利用GetExitCodeProcess(pihProcess&dwExitCode)通過看dwExitCode返回值是不是STILL_ACTIVE依然活動說明存在
   
    waitforsingleobject通過超時來判斷具體的實現方法可以去網上查
   
    openprocess通過返回值來判斷如果返回值為NULL則表示進程已經打開否則沒有打開
   
    上面個方法別人都說行也有人說有局限性就拿openprocess來說吧自己在測試是發現線程關掉了但是返回值還是NULL郁悶啊~~沒辦法只能用最土的辦法來解決這個問題
   
    load系統的進程表看進程id是不是匹配匹配則表示正在運行否則就已經掛了代碼如下
   
    #include <Tlhelph>
   
    //如果有運行返回進程的true沒運行返回false
   
    bool ProcessExist(DWORD process_id)
   
    {
   
    PROCESSENTRY pe;
   
    DWORD id = ;
   
    HANDLE hSnapshot = CreateToolhelpSnapshot(THCS_SNAPPROCESS
   
    pedwSize = sizeof(PROCESSENTRY
   
    if( !ProcessFirst(hSnapshot&pe) )
   
    {
   
    CloseHandle(hSnapshot)
   
    return false;
   
    }
   
    while(
   
    {
   
    pedwSize = sizeof(PROCESSENTRY
   
    if( ProcessNext(hSnapshot&pe)==FALSE )
   
    {
   
    CloseHandle(hSnapshot)
   
    return false;
   
    }
   
    if(process_id == pethProcessID)
   
    {
   
    CloseHandle(hSnapshot)
   
    return true;
   
    }
   
    }
   
    }


From:http://tw.wingwit.com/Article/os/xtgl/201311/9254.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.