首頁 後端開發 C#.Net教程 C/C++遍歷進程和進程ID的小工具

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

Jan 22, 2017 pm 02:06 PM
c/c++

當我們寫某些破壞性的程式時就需要對進程進行遍歷和提取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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

php與c#的差別有哪些 php與c#的差別有哪些 Jun 02, 2023 pm 01:45 PM

php與c#的差異有:1、語言型別系統不同,PHP屬於動態,而C#為靜態型別;2、使用的平台不同,PHP可實現跨平台,而C#為Windows專屬;3、程式設計範式不同,PHP支援物件導向、過程化和函數式編程,C#更傾向於物件導向編程;4、執行速度不同,PHP速度更快,C#相對較慢;5、應用場景不同,PHP應用於Web開發、伺服器等, C#用於Windows桌面和網路應用程式。

為什麼在C/C++中,結構體的sizeof不等於每個成員的sizeof總和? 為什麼在C/C++中,結構體的sizeof不等於每個成員的sizeof總和? Aug 26, 2023 am 09:29 AM

sizeof()所獲得的結構類型元素的大小並不總是等於每個單獨成員的大小。有時編譯器會添加一些填充以避免對齊問題。所以尺寸可能會改變。當結構成員後面跟著一個尺寸較大的成員或位於結構末端時,將添加填充。不同的編譯器有不同類型的對齊約束。在C標準中,總對齊結構取決於實作。情況1在這種情況下,雙精度z為8位元組長,大於x(4位元組))。因此又增加了4個位元組的填充。此外,短類型資料y在記憶體中具有2位元組空間,因此添加了額外的6位元組作為填充。範例程式碼#include<stdio.h>structmyS

使用Clang工具建立一個C/C++程式碼格式化工具 使用Clang工具建立一個C/C++程式碼格式化工具 Aug 26, 2023 pm 01:09 PM

Inthistutorial,wewillbediscussingaprogramtocreateaC/C++codeformattingtoolwiththehelpofclangtools.SETUPsudoaptinstallpythonsudoaptinstallclang-format-3.5然後我們將在當前用戶具有讀寫權限的位置創建一個Python檔案。範例importoscpp_extensions=(".cxx",".cpp&

在C/C++中,有預增和後增兩種操作 在C/C++中,有預增和後增兩種操作 Aug 25, 2023 pm 02:25 PM

這裡我們來看看什麼是C或C++中的前自增和後自增。前自增和後自增都是自增運算子。但它們幾乎沒有什麼區別。前自增運算子首先遞增一個變數的值,然後將其分配給其他變量,但在後自增運算子的情況下,它首先分配給一個變數變量,然後增加值。範例#include<iostream>usingnamespacestd;main(){  intx,y,z;  x=10;  y=10;&nb

一文詳解vscode配置C/C++運行環境【保母級教學】 一文詳解vscode配置C/C++運行環境【保母級教學】 Feb 27, 2023 pm 07:33 PM

VScode中怎麼開發置C/C++?怎麼配置C/C++環境?以下這篇文章跟大家分享一下VScode配置C/C++運行環境教學(保母級教學),希望對大家有幫助!

在C/C++中,strcpy()函數是用來將一個字串複製到另一個字串的函數 在C/C++中,strcpy()函數是用來將一個字串複製到另一個字串的函數 Sep 09, 2023 am 08:49 AM

函數strcpy()是一個標準函式庫函數。它用於將一個字串複製到另一個字串。在C語言中,它在“string.h”頭檔中聲明,而在C++語言中,它在cstring頭檔中聲明。它會傳回指向目的地的指標。這是C語言中strcpy()的語法,char*strcpy(char*dest,constchar*src);strcpy()的一些關鍵點。它將整個字串複製到目標字串中。它替換整個字串而不是追加它。它不會改變來源字串。以下是C語言中strcpy()的範例:範例 線上示範#in

C/C++程式用來計算一個數的階乘中的尾隨零​​的數量 C/C++程式用來計算一個數的階乘中的尾隨零​​的數量 Aug 29, 2023 pm 12:29 PM

這裡我們將了解如何計算任意數字的階乘結果中尾隨0的數量。因此,如果n=5,則5! =120。只有一個尾隨0。對於20!,它將是4個零作為20!=2432902008176640000。最簡單的方法就是計算階乘併計算0。但對於較大的n值,這種方法會失敗。所以我們將採用另一種方​​法。如果質因數是2和5,那麼尾隨零就會出現。如果我們計算2和5,我們就可以得到結果。為此,我們將遵循此規則。尾隨0=階乘(n)素因數中5的計數演算法countTrailingZeros(n)begin &

在C/C++中,putwchar()函數是用來輸出一個寬字元的函數 在C/C++中,putwchar()函數是用來輸出一個寬字元的函數 Sep 11, 2023 pm 05:57 PM

在本文中,我們將討論C++STL中putwchar()函數的工作原理、語法和範例。什麼是putwchar()? putwchar()函數是C++STL中的內建函數,它在<cwchar>頭檔中定義。 putwchar()函數用於在標準輸出裝置上寫入寬字元。此函數從參數中獲取寬字元並將其寫入系統的stdout或標準輸出。函數是putchar()的寬字元版本,putchar()在<cstdio>頭檔中定義。語法putwchar(wchar_twidec);參數此函數接受以下參

See all articles