pItem.SubItems.Add(intToStr(pid));
pItem := processListView.Items.Add();
usage:= pObject.Properties_.Item('PercentProcessorTime',0).get_Value;
pid := pObject.Properties_.Item('IdProcess',0).get_Value;
name := pObject.Properties_.Item('Name',0).Get_Value;
procedure TMainForm.AddProcessToList(var pObject: ISWbemObject);
Собственно добавление информации о процессе в производится функция AddProcessToList():
processListView.Items.EndUpdate;
pObject := refresherItem.ObjectSet.ItemIndex(i);
processListView.Items.BeginUpdate;
pCount := refresherItem.ObjectSet.Count - 1;
procedure TMainForm.TimerTimer(Sender: TObject);
Ок. теперь refresherItem будет содержать список наших процессов, и мы можем его обновлять по событию таймера, и непосредственно выводить в список processListView.
refresherItem := refresher.AddEnum(services as ISWbemServicesEx,'Win32_PerfFormattedData_PerfProc_Process',0,nil);
refresher := CoSWbemRefresher.Create;
procedure TMainForm.FormCreate(Sender: TObject);
refresherItem : ISWbemRefreshableItem;
WMI может быть использован не только для получения статистической информации, как в предыдущем примере, но и , например, для мониторинга системных ресурсов, для чего предусмотрены классы Win32_PerfRawData & Win32_PerfFormattedData. Рассмотрим пример мониторинга списка процессов Windows. Данная задача достаточно проста в реализации с использованием WMI и сводится к десятку-другому строк кода. Для мониторинга и обновления данных объектов/классов унаследованных от Win32_Perf...Data требуется использовать объект класса ISWbemRefresher, который хранит коллекцию объектов для обновления. Для отображения информации на форму добавим processListView : TListView, и обновлять данные будем по событию таймера. При создании формы создадим объект для обновления, и сохраним его в private секции. При добавлении класса в коллекцию ISWbemRefresher возвращает экземпляр ISWbemRefresherItem, из которого мы уже и будем извлекать обновленные данные. Расширим программу предыдущего примера следующим образом:
Опубликовано 25.04.2010 г. 23:39
Delphi programming blog | WMI & process list
Комментариев нет:
Отправить комментарий