占用率:Windows运行时进程繁多,如能将每个进程的位置对号入座,对于系统的管理有很大的帮助。下面介绍如何在BCB中查看进程的EXE文件名。
建立一个新工程,注意将"tlhelp32.h"包含进工程,添加如下代码:
void __fastcall TForm1::Create(TObject *Sender){
ShowMessage(GetName(Handle));//查看新建工程的EXE文件名。
}
//--------------------------------------------------------------------------
String TForm1::GetName(HWND hwnd){
unsigned long *ProcId,ThreadId,PFound;
void *Snapshot;
PROCESSENTRY32 process;
ThreadId=GetWindowThreadProcessId(hwnd,ProcId);
if(ThreadId==0||ProcId==0)return NULL;
Snapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
PFound=Process32First(Snapshot,&process);//搜索第一个进程
while(PFound){
if(process.th32ProcessID==*ProcessId){
CloseHandle(Snapshot);
return String(process.szExeFile);//返回文件名
}
PFound=Process32Next(Snapshot,&process);//继续进程搜索
}
CloseHandle(Snapshot);//释放资源
delete ProcId;
return NULL;
}
至此,已获得新建工程的EXE文件名。当然,在PROCESSENTRY32结构体中包含的信息远不只这些,可调用其它的数据成员获得更多信息。
这结构体里面有占用率的值!
建立一个新工程,注意将"tlhelp32.h"包含进工程,添加如下代码:
void __fastcall TForm1::Create(TObject *Sender){
ShowMessage(GetName(Handle));//查看新建工程的EXE文件名。
}
//--------------------------------------------------------------------------
String TForm1::GetName(HWND hwnd){
unsigned long *ProcId,ThreadId,PFound;
void *Snapshot;
PROCESSENTRY32 process;
ThreadId=GetWindowThreadProcessId(hwnd,ProcId);
if(ThreadId==0||ProcId==0)return NULL;
Snapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
PFound=Process32First(Snapshot,&process);//搜索第一个进程
while(PFound){
if(process.th32ProcessID==*ProcessId){
CloseHandle(Snapshot);
return String(process.szExeFile);//返回文件名
}
PFound=Process32Next(Snapshot,&process);//继续进程搜索
}
CloseHandle(Snapshot);//释放资源
delete ProcId;
return NULL;
}
至此,已获得新建工程的EXE文件名。当然,在PROCESSENTRY32结构体中包含的信息远不只这些,可调用其它的数据成员获得更多信息。
这结构体里面有占用率的值!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货