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 小时前
21. 泛型编程上
开发语言·c++·笔记·算法
青瓦梦滋4 小时前
传输层UDP/TCP协议
linux·网络·c++·网络协议·tcp/ip·udp
一只旭宝4 小时前
细讲C加加【9】C++ std::function与std::bind详解|仿函数、绑定器、类成员绑定、占位符、成员偏移指针
开发语言·c++·算法
Lhan.zzZ6 小时前
在 Visual Studio 2022 中打造可扩展的动态链接库模块:从零搭建到原理解析
开发语言·c++·visual studio
zh路西法8 小时前
【3D SLAM源码解读系列】(二)Small_gicp——5 个积木搭出最优点云配准
c++·pcl·icp·fastgicp·smallgicp·gicp
fpcc10 小时前
ubuntu26环境下的开发环境安装处理
c++·并行编程
charlie11451419111 小时前
Cinux · 第一次跳进 Ring 3:用户态与特权隔离
开发语言·c++·操作系统·开源项目
别动我齐刘海11 小时前
机器学习基础2——C++、OpenCV、点云、Open3D
c++·人工智能·opencv·机器学习·计算机视觉·机器人·ros2
躺不平的理查德12 小时前
Windows C++ 第三方库使用流程备忘录--OpenCV
开发语言·c++
余额瞒着我当琳12 小时前
C++STL容器string--迭代器,string的接口,string的遍历,访问方式
c++