C++BuilderXE12查询所有进程名程与句柄

//---------------------------------------------------------------------------

#include <tlhelp32.h> // 添加这行

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn1Click(TObject *Sender)

{

Memo1->Clear();

HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

if (hSnapshot == INVALID_HANDLE_VALUE)

{

Memo1->Lines->Add("错误:无法创建进程快照!");

return;

}

PROCESSENTRY32 pe32;

pe32.dwSize = sizeof(PROCESSENTRY32);

int processCount = 0;

if (Process32First(hSnapshot, &pe32))

{

Memo1->Lines->Add("=== 系统进程列表 ===");

Memo1->Lines->Add("序号\tPID\t句柄\t\t进程名称\t\t线程数\t父进程ID");

Memo1->Lines->Add("------------------------------------------------------------");

do

{

processCount++;

// 尝试打开进程获取句柄

HANDLE hProcess = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION,

FALSE, pe32.th32ProcessID);

String handleStr;

if (hProcess != NULL)

{

handleStr = "0x" + IntToHex((int)hProcess, 8);

CloseHandle(hProcess);

}

else

{

handleStr = "[拒绝访问]";

}

// 格式化输出

String line = Format("%d\t%d\t%s\t%s\t%d\t%d",

ARRAYOFCONST((

processCount,

pe32.th32ProcessID,

handleStr,

pe32.szExeFile,

pe32.cntThreads,

pe32.th32ParentProcessID

)));

Memo1->Lines->Add(line);

} while (Process32Next(hSnapshot, &pe32));

}

CloseHandle(hSnapshot);

Memo1->Lines->Add("==========================================");

Memo1->Lines->Add("总计找到 " + IntToStr(processCount) + " 个进程");

}

//---------------------------------------------------------------------------

相关推荐
郝学胜-神的一滴3 分钟前
[简化版 GAMES 101] 计算机图形学 04:二维变换上
c++·算法·unity·godot·图形渲染·unreal engine·cesium
来日可期13144 分钟前
C/C++ 反常识记录(1)—— 那些容易踩坑的语法细节
c语言·开发语言·c++
计算机安禾8 分钟前
【数据结构与算法】第41篇:图论(五):拓扑排序与关键路径
c语言·数据结构·c++·算法·图论·visual studio
Q741_14710 分钟前
每日一题 力扣 1320. 二指输入的的最小距离 动态规划 C++ 题解
c++·算法·leetcode·动态规划
实心儿儿12 分钟前
C++ —— C++11(2)
开发语言·c++
加油JIAX12 分钟前
C++11特性
c++
yong15858553431 小时前
Linux C++ 中的 volatile变量在多线程环境下进行运算的问题
c语言·c++
小肝一下1 小时前
c++从入门到跑路——string类
开发语言·c++·职场和发展·string类
楼田莉子1 小时前
设计模式:构造器模式
开发语言·c++·后端·学习·设计模式
邪修king1 小时前
UE5 零基础入门第二弹:让你的几何体 “活” 起来 ——Actor 基础与蓝图交互入门
c++·ue5·交互