下面的命令就是显示进程名称为cmdexe的pid,不过这里有一个问题就是获得的pid是包括双引号的,这个你要自己再处理一下。
for
/f
"delims=,
tokens=1,2
skip=3"
%%a
in
('tasklist
/fo
csv
/fi
^"imagename
eq
cmdexe^"')
do
echo
%%b
通过Delphi获得当前所有进程名,进程PID
代码如下
// 获取系统当前进程名和进程ID,
//注:应引用"TLHelp32"单元"use TLHelp32"。
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls,TLHelp32;
type
TForm2 = class(TForm)
ListBox1: TListBox;
ListView1: TListView;
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
ContinueLoop:BOOL; //是否继续循环
FSnapshotHandle:THandle; //进程快照句柄
FProcessEntry32:TProcessEntry32; //进程入口的结构体信息
implementation
{$R dfm}
procedure TForm2Button1Click(Sender: TObject);
//在listview中显示进程
var
NewItem: TListItem;
Summ:integer;
begin
ListView1ItemsBeginUpdate;
ListView1ItemsClear;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
//CreateToolhelp32Snapshot函数得到进程快照
FProcessEntry32dwSize := Sizeof(FProcessEntry32); //初始化
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
//Process32First 得到一个系统快照里第一个进程的信息
Summ := 0;
while ContinueLoop do
begin
Summ := Summ + 1;
NewItem := ListView1ItemsAdd; //在ListView1显示
NewItemImageIndex := -1;
NewItemCaption := ExtractFileName(FProcessEntry32szExeFile); //进程名称
//NewItemCaption := ExtractFilePath(FProcessEntry32szExeFile);//进程名称
NewItemsubItemsAdd(FormatFloat('00', Summ));//序号
NewItemsubItemsAdd(IntToStr(FProcessEntry32th32ProcessID));//进程ID
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
ListView1ItemsEndUpdate;
Label1Caption:='进程数:'+inttostr(ListView1ItemsCount);
end;
procedure TForm2Button2Click(Sender: TObject);
//在listbox中显示进程 id
var
ProcessName : string; //进程名
ProcessID : integer; //进程表示符
begin
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); //创建一个进程快照
FProcessEntry32dwSize:=Sizeof(FProcessEntry32);
ContinueLoop:=Process32First(FSnapshotHandle,FProcessEntry32); //得到系统中第一个进程
//循环例举
while ContinueLoop do
begin
ProcessName := FProcessEntry32szExeFile;
ProcessID := FProcessEntry32th32ProcessID;
Listbox1Itemsadd('应用程序名 :'+ProcessName +'#进程ID:'+ inttostr(ProcessID));
ContinueLoop:=Process32Next(FSnapshotHandle,FProcessEntry32);
end;
end;
procedure TForm2FormCreate(Sender: TObject);
begin
//对ListView1的初始化
ListView1ViewStyle:=vsReport; //设置ListView的显示方式 不设置这种方式不显示列头
ListView1ColumnsAdd; //添加第一列
ListView1Column[0]Caption:='进程名';
ListView1Column[0]AutoSize:=false;
ListView1Column[0]Width:=100;
ListView1Column[0]Alignment:=taLeftJustify;//左对齐
ListView1ColumnsAdd; //添加第二列
ListView1Column[ListView1ColumnsCount-1]Caption:='序号';
ListView1Column[ListView1ColumnsCount-1]AutoSize:=true;
ListView1Column[ListView1ColumnsCount-1]Alignment:=taLeftJustify;//左对齐
ListView1ColumnsAdd; //添加第三列
ListView1Column[ListView1ColumnsCount-1]Caption:='ID';
ListView1Column[ListView1ColumnsCount-1]AutoSize:=true;
ListView1Column[ListView1ColumnsCount-1]Alignment:=taLeftJustify;//左对齐
end;
end
1 ps 简介
ps 命令就是最根本相应情况下也是相当强大地进程查看命令运用该命令可以确定有哪些进程正在运行和运行地状态、 进程 是否结束、进程有没有僵死、哪些进程占用了过多地资源等等总之大部分信息均为可以通过执行该命令得到地
2 ps 命令及其参数
ps 命令最经常使用地还是用于监控后台进程地工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设
备进行通信地,所以如果需要检测其情况,便可以运用 ps 命令了
该命令语法格式如下:
ps [选项]
-e 显示所有进程,环境变量
-f 全格式
-h 不显示标题
-l 长格式
-w 宽输出
a
显示终端上地所有进程,包括其他用户地进程
r
只显示正在运行地进程
x
显示没有控制终端地进程
在一个线程中每隔一秒钟(用事件等待),计算一下当前进程cpu占用率: 下面以间隔一次进行计算: pt1 = GetProcessTimes();//(第一次) pt2 = GetProcessTimes();//(第二次) st1 = GetSystemTime();//(第一次) st2 = GetSystemTime();//(第二次) cpu_usage = (pt2-pt1)/(st2-st1) 通常如果是多个cpu cpu_usage /= cpu_count;
以上就是关于如何从批处理文件中获取进程PID全部的内容,包括:如何从批处理文件中获取进程PID、delphi7 已知进程PID,怎样通过PID获取进程窗体的句柄,、ubuntu t怎么通过pid查进程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)