|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
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. |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Неправильная работа приложения при компиляции 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 |