Автор: Iren 21.04.2007 18:31
Здравствуйте! Подскажите пожалуйста как вывести в Memo дату, время старта и завершения всех процессов,
которые отбражаются в ListBox. Я вот кое-что набросала сама, но у меня неправильно показывает время.
Код
procedure TForm1.Button2Click(Sender: TObject);
var
Start,Exit,KornelTime,UserTime,FileTime:TFileTime;
SystemTime:TSystemTime;
q:THandle;
Nomp,a : Integer;
SH : Thandle;
Num, I : Integer;
PPE : TProcessEntry32;
Pr_names : array [0..50] of string;
begin
Num := 0;
SH := CreateToolHelp32SnapShot(Th32cs_SnapAll, 0);
PPE.dwSize := sizeof (ProcessEntry32);
Process32First(SH, PPE);
Pr_Names [Num] := PPE.szExeFile;
while Process32Next(SH, PPE) do begin
Num := Num + 1;
Pr_Names [Num] := PPE.szExeFile;
Pr_num [Num] := PPE.th32ProcessID;
N:=Pr_num [ListBox2.ItemIndex];
q:=OpenProcess(PROCESS_QUERY_INFORMATION,true,N);
GetProcessTimes(q,Start,Exit,KornelTime,UserTime);
FileTimeToLocalFileTime(Start,FileTime);
FileTimeToSystemTime(FileTime,SystemTime);
FileTimeToLocalFileTime(Exit,FileTime);
FileTimeToSystemTime(FileTime,SystemTime);
Memo1.Lines.Add((IntToStr(SystemTime.wDay)+'.'+IntToStr(SystemTime.wMonth)+'.'+IntToStr(SystemTime.wYear))
+#32+(IntToStr(SystemTime.wHour)+':'+IntToStr(SystemTime.wMinute)+':'+IntToStr(SystemTime.wSecond)));
Memo1.Lines.Add(IntToStr(SystemTime.wHour)+':'+IntToStr(SystemTime.wMinute)+':'+IntToStr(SystemTime.wSecond));
end;
Listbox2.Clear;
for I := 0 to Num do Listbox2.Items.Add(Pr_Names[I]);
CloseHandle(SH)
end;