Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2017, 18:05   #1
АринаИльичева
Новичок
Джуниор
 
Регистрация: 23.11.2017
Сообщений: 1
По умолчанию Delphi процессы и потоки

Здравствуйте! помогите пожалуйста. в Delphi 7 выдает ошибку, которую я выложила ниже в виде снимка. Нужно было создать программу, которая выводит список всех процессов системы и их потоков. При нажатии на пустое место в компоненте ListView высвечивается ошибка, которую я тоже выложила ниже. Помогите пожалуйста, что сделать с тем, чтобы такой ошибки не возникало?
Код программы:
unit UnitProcessiPotoki;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Tlhelp32;

type
TForm1 = class(TForm)
ListView1: TListView;
ListView2: TListView;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ListView1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
result:boolean;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
SnapProcHandle: THandle;
Nextproc : Boolean;
ProcEntry : ProcessEntry32;
Item:TlistItem;
begin
listview1.Clear;
SnapProcHandle := CreateToolhelp32Snapshot(TH32CS_SNA PPROCESS, 0); //Ïîëó÷àåì ñíýïøîò
Result := (SnapProcHandle <> INVALID_HANDLE_VALUE);
if Result then
try
ProcEntry.dwSize := SizeOf(ProcEntry);
NextProc := Process32First(SnapProcHandle, ProcEntry);//Ïîëó÷àåì ïåðâûé ïîòîê
while NextProc do begin
Item:=Listview1.Items.Add;
Item.Caption:=ProcEntry.szExeFile;
Item.SubItems.Add(Inttostr(ProcEntr y.th32ProcessID));
Item.SubItems.Add(Inttostr(ProcEntr y.th32ParentProcessID));
Item.SubItems.Add(Inttostr(ProcEntr y.cntThreads));
Item.Data:=Pointer(ProcEntry.cntThr eads);
NextProc := Process32Next(SnapProcHandle, ProcEntry);//Ïîëó÷àåì ñëåäóþùèé ïîòîê
end;
Finally
CloseHandle(SnapProcHandle);
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;

procedure TForm1.ListView1Click(Sender: TObject);
var
SnapThreadHandle: THandle;
NextThread : Boolean;
ThreadEntry : TThreadEntry32;
Item:TlistItem;
begin
listview2.Clear;
SnapThreadHandle := CreateToolhelp32Snapshot(TH32CS_SNA PTHREAD, 0); //Ïîëó÷àåì ñíýïøîò
Result := (SnapThreadHandle <> INVALID_HANDLE_VALUE);
if Result then
try
ThreadEntry.dwSize := SizeOf(ThreadEntry);
NextThread := Thread32First(SnapThreadHandle, ThreadEntry);//Ïîëó÷àåì ïåðâûé ïîòîê
while NextThread do begin
if threadentry.th32OwnerProcessID=strt oint(listview1.Selected.SubItems[0]) then
begin
Item:=Listview2.Items.Add;
Item.Caption:= inttostr(threadentry.th32ThreadID);
Item.SubItems.Add(Inttostr(threaden try.th32OwnerProcessID));
Item.SubItems.Add(Inttostr(threaden try.tpBasePri));
Item.Data:=Pointer(threadentry.tpBa sePri);
end;
NextThread := Thread32Next(SnapThreadHandle, ThreadEntry);//Ïîëó÷àåì ñëåäóþùèé ïîòîê
end;
Finally
CloseHandle(SnapThreadHandle);
end;
end;
end.
Изображения
Тип файла: png Снимок.PNG (18.5 Кб, 122 просмотров)
Тип файла: png Снимок1.PNG (13.0 Кб, 118 просмотров)
АринаИльичева вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Неправильная работа приложения при компиляции MSVS (процессы, потоки) Aoizora Win Api 3 18.11.2016 19:28
потоки и процессы на C Владисла8 Фриланс 0 01.04.2013 13:50
Процессы и Потоки madman_34 Общие вопросы C/C++ 4 28.01.2013 22:55
процессы vs потоки the_deer_one Свободное общение 13 15.02.2012 21:06
Процессы и потоки ilham Win Api 10 17.12.2008 11:03