C語言判斷進程是否存在


#include <windows.h>
#include <tlhelp32.h>    //進程快照函數頭文件
#include <stdio.h>

bool getProcess(const char *procressName)                //此函數進程名不區分大小寫
{
    char pName[MAX_PATH];                                //和PROCESSENTRY32結構體中的szExeFile字符數組保持一致,便於比較
    strcpy(pName,procressName);                            //拷貝數組
    CharLowerBuff(pName,MAX_PATH);                        //將名稱轉換為小寫
    PROCESSENTRY32 currentProcess;                        //存放快照進程信息的一個結構體
    currentProcess.dwSize = sizeof(currentProcess);        //在使用這個結構之前,先設置它的大小
    HANDLE hProcess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//給系統內的所有進程拍一個快照

    if (hProcess == INVALID_HANDLE_VALUE)
    {
        printf("CreateToolhelp32Snapshot()調用失敗!\n");
        return false;
    }

    bool bMore=Process32First(hProcess,&currentProcess);        //獲取第一個進程信息
    while(bMore)
    {
        CharLowerBuff(currentProcess.szExeFile,MAX_PATH);        //將進程名轉換為小寫
        if (strcmp(currentProcess.szExeFile,pName)==0)            //比較是否存在此進程
        {
            CloseHandle(hProcess);                                //清除hProcess句柄
            return true;
        }
        bMore=Process32Next(hProcess,&currentProcess);            //遍歷下一個
    }

    CloseHandle(hProcess);    //清除hProcess句柄
    return false;
}

int main()
{
    
    if (getProcess("qq.exe"))
    {
        printf("存在\n");
    }
    else
    {
        printf("不存在\n");
    }
    return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM