首頁  >  文章  >  後端開發  >  C/C++遍歷進程和進程ID的小工具

C/C++遍歷進程和進程ID的小工具

黄舟
黄舟原創
2017-01-22 14:06:072003瀏覽

當我們寫某些破壞性的程式時就需要對進程進行遍歷和提取ID 

對於上述功能,我們先介紹幾個API


1.CreateToolhelp32Snapshout function

1.CreateToolhelp32Snapshout function

1.CreateToolhelp32Snapshout function

1.CreateToolhelp32Snapshout function

1.CreateToolhelp32Snapshout functionC/C++遍歷進程和進程ID的小工具

1.CreateToolhelp32Snapshout function


的快照

語法如下:C/C++遍歷進程和進程ID的小工具

HANDLE WINAPI CreateToolhelp32Snapshot(  
  _In_ DWORD dwFlags,  
  _In_ DWORD th32ProcessID  
);

第一個參數:快照包含了系統的一部分,參數如下:


進程。


第二個是關於 PROCESSENTRY32結構體

語法如下:

typedef struct tagPROCESSENTRY32 {  
  DWORD     dwSize;  
  DWORD     cntUsage;  
  DWORD     th32ProcessID;  
  ULONG_PTR th32DefaultHeapID;  
  DWORD     th32ModuleID;  
  DWORD     cntThreads;  
  DWORD     th32ParentProcessID;  
  LONG      pcPriClassBase;  
  DWORD     dwFlags;  
  TCHAR     szExeFile[MAX_PATH];  
} PROCESSENTRY32, *PPROCESSENTRY32;

這描述了一個入口,這個入口是當快照被調用時系統地址空間裡面的進程被讀取。


這裡只介紹szExeFile[MAX_PATH]和

th32ParentProcessID:這是創建進程後的進程的標識(父進程)

szExeFile:進程的名稱在執行檔的名稱原始碼!部分函數沒有解說,但可以透過註解或字面上可以了解

#include <Windows.h>  
#include <stdio.h>  
#include <TlHelp32.h>  
  
int main()  
{  
    HANDLE hProceessnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);  
    if (hProceessnap == INVALID_HANDLE_VALUE)  
    {  
        printf_s("创建进行快照失败\n");  
        return -1;  
    }  
    else  
    {  
        PROCESSENTRY32 pe32;  
        pe32.dwSize = sizeof(pe32);  
        BOOL hProcess = Process32First(hProceessnap, &pe32);  
        char buff[1024];  
        while (hProcess)  
        {  
            wsprintf(buff, "进程名:%s--------------------进程ID:%d", pe32.szExeFile, pe32.th32ParentProcessID);  
            printf_s("%s\n", buff);  
            memset(buff, 0x00, 1024);  
            hProcess = Process32Next(hProceessnap, &pe32);  
        }  
    }  
    CloseHandle(hProceessnap);  
  
    return 0;  
}

運作結果如下

C/C++遍歷進程和進程ID的小工具

行程結果如下

上述內容請關注PHP中文網(www.php.cn)! 🎜🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn