Hallo,
ich möchte eine Prozessliste ausgeben lassen von Delphi.
Hierzu wurde mir geraten ein ListView zu verwenden, da ich dort mehrere Spalten einstellen kann(aber nicht weiß wie).
Derzeit verwende ich einfach mehrere Listboxen.
Bisher habe ich noch nicht mit einem ListView gearbeitet und weiß nicht, wie ich dieses "ansprechen" kann.
Wie kann ich Einträge bzw. meine Prozessliste in die Spalten meiner ListView eintragen lassen?
Und wie kann ich Spalten einstellen und gesondert "ansprechen"?
Danke im Voraus.
Hier noch der Quellcode:
Delphi-Quellcode:
procedure GetProcessList(const aProcessList: TStrings); //erstellt Snapshot der Processliste
var
Snap: THandle;
ProcessE: TProcessEntry32;
begin
aProcessList.Clear;
Snap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
try
ProcessE.dwSize := SizeOf(ProcessE);
if Process32First(Snap, ProcessE)then
Repeat
aProcessList.Add(ProcessE.szExeFile);
Until not Process32Next(Snap, ProcessE)
else
RaiseLastOSError;
finally CloseHandle(Snap);
end;
end;
procedure GetProcessIDList(const aProcessList: TStrings); //erstellt Snapshot der ProcessIDliste
var
Snap: THandle;
ProcessE: TProcessEntry32;
begin
aProcessList.Clear;
Snap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
try
ProcessE.dwSize := SizeOf(ProcessE);
if Process32First(Snap, ProcessE)then
Repeat
aProcessList.Add(inttostr(ProcessE.th32ProcessID));
Until not Process32Next(Snap, ProcessE)
else
RaiseLastOSError;
finally CloseHandle(Snap);
end;
end;
procedure GetProcessThreadList(const aProcessList: TStrings);
var
Snap: THandle;
ProcessE: TProcessEntry32;
begin
aProcessList.Clear;
Snap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
try
ProcessE.dwSize := SizeOf(ProcessE);
if Process32First(Snap, ProcessE)then
Repeat
aProcessList.Add(inttostr(ProcessE.cntThreads));
Until not Process32Next(Snap, ProcessE)
else
RaiseLastOSError;
finally CloseHandle(Snap);
end;
end;
procedure GetProcessPriClassList(const aProcessList: TStrings);
var
Snap: THandle;
ProcessE: TProcessEntry32;
begin
aProcessList.Clear;
Snap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
try
ProcessE.dwSize := SizeOf(ProcessE);
if Process32First(Snap, ProcessE)then
Repeat
aProcessList.Add(inttostr(ProcessE.pcPriClassBase));
Until not Process32Next(Snap, ProcessE)
else
RaiseLastOSError;
finally CloseHandle(Snap);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
GetProcessList(listbox1.items);
GetProcessIDList(listbox2.Items);
GetProcessThreadList(listbox3.items);
GetProcessPriClassList(listbox4.Items);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
listBox1.Items.Clear();
listBox2.Items.Clear();
listBox3.Items.Clear();
listBox4.Items.Clear()
end;
end.