社区
非技术区
帖子详情
如何取得正在系统中运行的程序的名称及路径的列表?
WindowsAPI
2002-01-22 01:01:23
急待解决,谢谢!!
...全文
139
6
打赏
收藏
如何取得正在系统中运行的程序的名称及路径的列表?
急待解决,谢谢!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wz2001
2002-01-22
打赏
举报
回复
把kylion的例程删一大半不就可以了吗
WindowsAPI
2002-01-22
打赏
举报
回复
我说的是出现在WINDOWS操作系统“关闭程序”对话框中的那些程序的名称和路径。
kylion
2002-01-22
打赏
举报
回复
procedure ScanProcess;
var
Process:^TProcessinfo;
NotProcessEnd:boolean;
ProcessListHandle:THandle;
ProcessStructure:TProcessEntry32;
FP:pointer;
Pi:integer;
TmpExeFile:string;
TmpID:DWORD;
TmpProcess:^TProcessinfo;
ProcessFound:boolean;
ProcessHandle:THandle;
FCreateTime:FILETIME;
SCreateTime:SYSTEMTIME;
FExitTime:FILETIME;
// SExitTime:SYSTEMTIME;
KernelTime:FILETIME;
UserTime:FILETIME;
// KTime:integer;
// UTime:integer;
// ExitCode:DWORD;
begin
//清除CurrentList
CurrentList.Clear;
//清除NewList
NewList.Clear;
//创建Snapshot,为下一步的进程搜索作准备
ProcessListHandle:=Createtoolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
//初始化Snapshot Handle
ProcessStructure.dwSize:=sizeof(ProcessStructure);
//取第一个进程信息
NotProcessEnd:=process32First(ProcessListHandle,ProcessStructure);
//循环取下一个进程
while NotProcessEnd do
begin
TmpExeFile:=ProcessStructure.szExeFile;
TmpID:=ProcessStructure.th32ProcessID;
//初始化进程搜索标志
ProcessFound:=false;
//在已存在的进程列表中搜索进程
for Pi:=0 to ProcessList.Count-1 do
begin
TmpProcess:=ProcessList.Items[Pi];
if (TmpExeFile=TmpProcess.ExeFile)and(TmpID=TmpProcess.ProcessID) then
begin//进程已存在
//修改进程检测时间
TmpProcess.EndTime:=Time;
//添加到当前进程列表中
CurrentList.Add(TmpProcess);
//更改进程搜索标志
ProcessFound:=true;
//退出已知进程搜索循环
break;
end;
end;
//如果进程已存在,则跳过新建节点代码
if ProcessFound then
begin
//得到下一个进程
NotProcessEnd:=Process32Next(ProcessListHandle,ProcessStructure);
continue;
end;
//创建新进程接点
New(Process);
//取进程相关信息
Process.ExeFile:=ProcessStructure.szExeFile;
Process.ProcessID:=ProcessStructure.th32ProcessID;
Process.BasePrior:=ProcessStructure.pcPriClassBase;
Process.ParentID:=ProcessStructure.th32ParentProcessID;
Process.ThreadNum:=ProcessStructure.cntThreads;
Process.FirstWindows:=0;
//Process.BeginTime:=Time;
//Process.EndTime:=Time;
//通过进程ID得到进程句柄
ProcessHandle:=OpenProcess(PROCESS_QUERY_INFORMATION,true,Process.ProcessID);
//取进程相关时间
GetProcessTimes(ProcessHandle,FCreateTime,FExitTime,KernelTime,UserTime);
{if GetExitCodeProcess(ProcessHandle,ExitCode) then
Process.ParentID:=ExitCode
else Process.ParentID:=0;}
closeHandle(ProcessHandle);
//转换进程创建时间
FileTimeToLocalFileTime(FCreateTime,FCreateTIme);
FileTimeToSystemTime(FCreateTime,SCreateTime);
//FileTimetoSystemTime(FExitTime,SExitTIme);
//FileTimeToSystemTime(KernelTime,SKTime);
//FileTimetoSystemTime(UserTime,SUTime);
GetProcessBase(Process^,KernelTime, UserTime);
{
try
if (SystemTimeToDateTime(SKTime)>SystemTimeToDateTime(SUTime)) then
Process.ProcessBase:='系统进程';
except
Process.ProcessBase:='系统进程';
end;}
// showmessage(Process.ExeFile);
// Process.ProcessBase:='系统进程';
try
Process.BeginTime:=SystemTimeToDateTime(SCreateTime);
except
Process.BeginTime:=Date;
end;
Process.EndTime:=Date+Time;
{
//转换当前时区
//SystemTimeToTzSpecificLocalTime(@TimeZone,Process.createTime,SCreateTime);
//得到时间字符串
//GetTimeFormat(LOCALE_USER_DEFAULT,TIME_FORCE24HOURFORMAT,@SCreateTime,CTimeStr,'HH'':''mm'':''ss',11);
//转换进程撤消时间
//FileTimetoSystemTime(ExitTime,process.TerminateTime);
}
//添加新进程
ProcessList.Add(Process);
//添加到新进程列表
NewList.Add(Process);
//添加到当前进程列表
CurrentList.Add(Process);
//得到下一个进程
NotProcessEnd:=Process32Next(ProcessListHandle,ProcessStructure);
end;
ClearWindowText;
CallbackFunction(FP):=EnumWindowsProc;
//初始化回调函数
ThreadListNum:=0;
{//检索窗口
EnumWindows(FP,0);
CloseHandle(ProcessListHandle);//别忘了释放Snapshot Handle
end;
zjj_horse
2002-01-22
打赏
举报
回复
ExtractFilePath(paramstr(0))+filename
cszhz
2002-01-22
打赏
举报
回复
openprocess
.......
40Star
2002-01-22
打赏
举报
回复
所有的吗?还是自己的?
自己的用ExtractFilePath()/ExtractFileDir()都行!
研发&技术&项目管理专题-如何规划人才梯队建设
路径
?
离职率高,人才缺乏竞争力,如何根据企业人才实际情况,规划人才梯队建设
路径
和解决企业人才管理难题,增强团队凝聚力和人才竞争力,为企业发展和项目团队建设提供科学有效的人才梯队,减少因人才流失带来的
系统
性...
vscode或cmd:无法将“git”项识别为 cmdlet、函数、脚本文件或可
运行
程序
的
名称
。请检查
名称
的拼写,如果包括
路径
,请确保
路径
正确
无法将“git”项识别为 cmdlet、函数、脚本文件或可
运行
程序
的
名称
。请检查
名称
的拼写,如果包括
路径
,请确保
路径
正确 解决方法: 情况一、先去win+R,去cmd看看输入git是不是也是无法识别 如果也无法识别,则原因是...
node : 无法将“node”项识别为 cmdlet、函数、脚本文件或可
运行
程序
的
名称
。请检查
名称
的拼写,如果包括
路径
,请确保
路径
正 确,然后再试一次 的解决方案
node : 无法将“node”项识别为 cmdlet、函数、脚本文件或可
运行
程序
的
名称
。 请检查
名称
的拼写,如果包括
路径
,请确保
路径
正 确,然后再试一次 解决方案 1.首先先确认自己的node已经安装了,整个
路径
不要有
中
文或...
npm 无法将“npm”项识别为 cmdlet、函数、脚本文件或可
运行
程序
的
名称
。请检查
名称
的拼写,如果包括
路径
,请确保
路径
正确,然后再试一次。
npm无法将“npm”项识别为cmdlet、函数、脚本文件或可
运行
程序
的
名称
。请检查
名称
的拼写,如果包括
路径
,请确保
路径
正确,然后再试一次。
vue : 无法将“vue”项识别为 cmdlet、函数、脚本文件或可
运行
程序
的
名称
。请检查
名称
的拼写,如果包括
路径
,请确保
路径
正确, 然后再试一次 必解决技巧
vue : 无法将“vue”项识别为 cmdlet、函数、脚本文件或可
运行
程序
的
名称
。请检查
名称
的拼写,如果包括
路径
,请确保
路径
正确, 然后再试一次 #vue : 无法将“vue”项识别为 cmdlet、函数、脚本文件或可
运行
程序
的...
非技术区
828
社区成员
53,611
社区内容
发帖
与我相关
我的任务
非技术区
Delphi 非技术区
复制链接
扫一扫
分享
社区描述
Delphi 非技术区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章