>백엔드 개발 >C#.Net 튜토리얼 >프로세스 및 프로세스 ID를 탐색하기 위한 C/C++ 소형 도구

프로세스 및 프로세스 ID를 탐색하기 위한 C/C++ 소형 도구

黄舟
黄舟원래의
2017-01-22 14:06:072034검색

파괴적인 프로그램을 작성할 때는 프로세스를 순회하여 ID를 추출해야 합니다

위 기능의 경우 먼저 여러 API를 소개합니다


1.CreateToolhelp32Snapshout 함수

프로세스, 모듈 또는 스레드의 스냅샷 가져오기

구문은 다음과 같습니다.

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

첫 번째 매개변수: 스냅샷에는 system , 매개변수는 다음과 같습니다:

프로세스 및 프로세스 ID를 탐색하기 위한 C/C++ 소형 도구


프로세스 및 프로세스 ID를 탐색하기 위한 C/C++ 소형 도구

TH32CS_SNAPPROCESS

를 사용합니다. 여기에 스냅샷이 포함됩니다. 시스템의 모든 프로세스입니다.


두 번째는 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만 소개합니다. 이는 프로세스가 생성된 후 프로세스(상위 프로세스)의 ID입니다.

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;  
}

실행 결과는 다음과 같습니다


프로세스 및 프로세스 ID를 탐색하기 위한 C/C++ 소형 도구

위는 프로세스 및 프로세스 ID 탐색을 위한 C/C++ 가젯의 내용입니다. 더 많은 관련 내용은 PHP 중국어 웹사이트(www.php.cn)를 참고하세요. !

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.