Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как пользоваться ситсемными счетчиками, А ля Counters 
V
    Опции темы
Mephisto
  Дата 4.12.2006, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: нет
Всего: 34



Собственно САБЖ smile 
PM   Вверх
Snowy
Дата 4.12.2006, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Счётчиками чего?
PM MAIL   Вверх
Mephisto
Дата 4.12.2006, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: нет
Всего: 34



Системные счетчики.
Т.е. значения которых через утилиту "Производительность" в вин NT можно смотреть....

Меня интересует как читать и как писать... smile 
PM   Вверх
Snowy
Дата 4.12.2006, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



В смысле - в диспетчере задач?
То, что проц и память? Или ещё что?
Проц: http://forum.vingrad.ru/index.php?act=modu...amp;section=690
Память: http://vingrad.ru/DELPHI-DLP-000486

Добавлено @ 13:37 
Цитата(Mephisto @  4.12.2006,  13:32 Найти цитируемый пост)
Т.е. значения которых через утилиту "Производительность" в вин NT можно смотреть....
Просто я не знаю такой утилиты smile
PM MAIL   Вверх
Mephisto
Дата 4.12.2006, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: нет
Всего: 34



Цитата(Snowy @  4.12.2006,  14:36 Найти цитируемый пост)
В смысле - в диспетчере задач?

Неа!  smile 

Панель управления -> администрирование -> Производительность!

Control Panel -> Administrative Tools -> Perfomances
PM   Вверх
Snowy
Дата 4.12.2006, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Ага. Уже сообразил, что ты про Perfomance Counters: http://msdn2.microsoft.com/en-us/library/aa373219.aspx
Ну, тут я готовых решений не встречал. В смысле по полнофункционалу.
А по считыванию есть разношёрстые примеры.
Это нужно у гугеля спросить об использовании HKEY_PERFORMANCE_DATA в Delphi.
На форуме есть пара примеров. Но маловато.
PM MAIL   Вверх
dumb
Дата 4.12.2006, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 7
Всего: 158



 Performance Counters

+местный поиск по слову performance smile
PM MAIL   Вверх
Mephisto
Дата 4.12.2006, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: нет
Всего: 34



Snowy, пасип. Если че получицо, отпишус!!! smile 
PM   Вверх
Mephisto
Дата 4.12.2006, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: нет
Всего: 34



Откопал модуль для работы со счетчиками:
Код
//*******************************************************
//
//    Copyright © 1995-2002 by Lucian Radulescu
//    mailto  :  [email protected]
//    http    :  http://www.ez-delphi.com
//
//*******************************************************

unit PDH;

{$ALIGN ON}
{$MINENUMSIZE 4}

interface

uses
  Windows;

const

  PDH_NO_DATA                      = $800007D5;
  PDH_MEMORY_ALLOCATION_FAILURE    = $C0000BBB;
  PDH_INVALID_HANDLE               = $C0000BBC;
  PDH_INVALID_ARGUMENT             = $C0000BBD;

  PDH_FMT_RAW                      = $00000010;
  PDH_FMT_ANSI                     = $00000020;
  PDH_FMT_UNICODE                  = $00000040;
  PDH_FMT_LONG                     = $00000100;
  PDH_FMT_DOUBLE                   = $00000200;
  PDH_FMT_LARGE                    = $00000400;
  PDH_FMT_NOSCALE                  = $00001000;
  PDH_FMT_1000                     = $00002000;
  PDH_FMT_NODATA                   = $00004000;
  PDH_FMT_NOCAP100                 = $00008000;

type

  PQUERY              = ^HQUERY;
  HQUERY              = THandle;

  PCOUNTER            = ^HCOUNTER;
  HCOUNTER            = THandle;

  PDH_STATUS          = Longint;

  PPERF_COUNTER_BLOCK = ^TPERF_COUNTER_BLOCK;
  _PERF_COUNTER_BLOCK = record                          // pcb
     ByteLength          : DWORD;
  end;
  {$EXTERNALSYM _PERF_COUNTER_BLOCK}
  TPERF_COUNTER_BLOCK = _PERF_COUNTER_BLOCK;
  PERF_COUNTER_BLOCK  = _PERF_COUNTER_BLOCK;
  {$EXTERNALSYM PERF_COUNTER_BLOCK}

  PPERF_COUNTER_DEFINITION = ^TPERF_COUNTER_DEFINITION;
  _PERF_COUNTER_DEFINITION = record                     // pcd
    ByteLength           : DWORD;
    CounterNameTitleIndex: DWORD;
    CounterNameTitle     : LPWSTR;
    CounterHelpTitleIndex: DWORD;
    CounterHelpTitle     : LPWSTR;
    DefaultScale         : DWORD;
    DetailLevel          : DWORD;
    CounterType          : DWORD;
    CounterSize          : DWORD;
    CounterOffset        : DWORD;
  end;
  {$EXTERNALSYM _PERF_COUNTER_DEFINITION}
  TPERF_COUNTER_DEFINITION = _PERF_COUNTER_DEFINITION;
  PERF_COUNTER_DEFINITION  = _PERF_COUNTER_DEFINITION;
  {$EXTERNALSYM PERF_COUNTER_DEFINITION}

  PPERF_DATA_BLOCK = ^TPERF_DATA_BLOCK;
  _PERF_DATA_BLOCK = record                             // pdb
    Signature            : array[0..3] of WCHAR;
    LittleEndian         : DWORD;
    Version              : DWORD;
    Revision             : DWORD;
    TotalByteLength      : DWORD;
    HeaderLength         : DWORD;
    NumObjectTypes       : DWORD;
    DefaultObject        : DWORD;
    SysTime              : SYSTEMTIME;
    PerfTime             : LARGE_INTEGER;
    PerfFreq             : LARGE_INTEGER;
    PerfTime100nSec      : LARGE_INTEGER;
    SystemNameLength     : DWORD;
    SystemNameOffset     : DWORD;
  end;
  {$EXTERNALSYM _PERF_DATA_BLOCK}
  TPERF_DATA_BLOCK  = _PERF_DATA_BLOCK;
  PERF_DATA_BLOCK   = _PERF_DATA_BLOCK;
  {$EXTERNALSYM PERF_DATA_BLOCK}

  PPERF_INSTANCE_DEFINITION = ^TPERF_INSTANCE_DEFINITION;
  _PERF_INSTANCE_DEFINITION = record                    // pid
    ByteLength           : DWORD;
    ParentObjectTitleIndex: DWORD;
    ParentObjectInstance : DWORD;
    UniqueID             : DWORD;
    NameOffset           : DWORD;
    NameLength           : DWORD;
  end;
  {$EXTERNALSYM _PERF_INSTANCE_DEFINITION}
  TPERF_INSTANCE_DEFINITION = _PERF_INSTANCE_DEFINITION;
  PERF_INSTANCE_DEFINITION  = _PERF_INSTANCE_DEFINITION;
  {$EXTERNALSYM PERF_INSTANCE_DEFINITION}

  PPERF_OBJECT_TYPE = ^TPERF_OBJECT_TYPE;
  _PERF_OBJECT_TYPE = record                            // pot
    TotalByteLength      : DWORD;
    DefinitionLength     : DWORD;
    HeaderLength         : DWORD;
    ObjectNameTitleIndex : DWORD;
    ObjectNameTitle      : LPWSTR;
    ObjectHelpTitleIndex : DWORD;
    ObjectHelpTitle      : LPWSTR;
    DetailLevel          : DWORD;
    NumCounters          : DWORD;
    DefaultCounter       : DWORD;
    NumInstances         : DWORD;
    CodePage             : DWORD;
    PerfTime             : LARGE_INTEGER;
    PerfFreq             : LARGE_INTEGER;
  end;
  {$EXTERNALSYM _PERF_OBJECT_TYPE}
  TPERF_OBJECT_TYPE = _PERF_OBJECT_TYPE;
  PERF_OBJECT_TYPE  = _PERF_OBJECT_TYPE;
  {$EXTERNALSYM PERF_OBJECT_TYPE}

  PPDH_FMT_COUNTERVALUE = ^TPDH_FMT_COUNTERVALUE;
  _PDH_FMT_COUNTERVALUE = record
    CStatus              : DWORD;
    longValue            : Longint;
    doubleValue          : double;
    largeValue           : LONGLONG;
    AnsiStringValue      : LPCSTR;
    WideStringValue      : LPCWSTR;
  end;
  {$EXTERNALSYM _PDH_FMT_COUNTERVALUE}
  TPDH_FMT_COUNTERVALUE = _PDH_FMT_COUNTERVALUE;
  PDH_FMT_COUNTERVALUE  = _PDH_FMT_COUNTERVALUE;
  {$EXTERNALSYM PDH_FMT_COUNTERVALUE}

var
  PdhOpenQuery                : function( pReserved: Pointer;
                                          dwUserData: DWORD;
                                          phQuery: PQUERY  ): PDH_STATUS; stdcall;

  PdhCloseQuery               : function( ahQuery: HQUERY ): PDH_STATUS; stdcall;

  PdhAddCounter               : function( ahQuery: HQUERY;
                                          szFullCounterPath: PChar;
                                          dwUserData: DWORD;
                                          phCounter: PCOUNTER ): PDH_STATUS; stdcall;

  PdhRemoveCounter            : function( ahCounter: HCOUNTER ): PDH_STATUS; stdcall;

  PdhCollectQueryData         : function( ahQuery: HQUERY ): PDH_STATUS; stdcall;

  PdhValidatePath             : function( szFullCounterPath: PChar ): PDH_STATUS; stdcall;

  PdhGetFormattedCounterValue : function( ahCounter: HCOUNTER;
                                          dwFormat: DWORD;
                                          lpdwType: LPDWORD;
                                          pValue: PPDH_FMT_COUNTERVALUE): PDH_STATUS; stdcall;

function LoadPdh: Boolean;

implementation

var
  hPdh: THandle = HINSTANCE_ERROR;

function LoadPdh: Boolean;
const
  pdh_lib  = 'pdh.dll';
begin
  Result := hPdh > HINSTANCE_ERROR;
  if Result then Exit;
  hPdh := LoadLibrary( pdh_lib );
  Result := hPdh > HINSTANCE_ERROR;
  if Result then
  begin
    PdhOpenQuery                := GetProcAddress( hPdh, 'PdhOpenQuery' );
    PdhCloseQuery               := GetProcAddress( hPdh, 'PdhCloseQuery' );
    PdhAddCounter               := GetProcAddress( hPdh, 'PdhAddCounterA' );
    PdhRemoveCounter            := GetProcAddress( hPdh, 'PdhRemoveCounter' );
    PdhCollectQueryData         := GetProcAddress( hPdh, 'PdhCollectQueryData' );
    PdhValidatePath             := GetProcAddress( hPdh, 'PdhValidatePathA' );
    PdhGetFormattedCounterValue := GetProcAddress( hPdh, 'PdhGetFormattedCounterValue' );
  end;
end;

initialization
  LoadPdh;
finalization
  if LoadPdh then
    FreeLibrary( hPdh );
end.

PM   Вверх
Snowy
Дата 4.12.2006, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Угу. Только здесь не всё.
Полный список и дока по всем функциям тут: http://msdn.microsoft.com/library/en-us/pe...s_functions.asp
PM MAIL   Вверх
Mephisto
Дата 4.12.2006, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: нет
Всего: 34



угу. Пасип.  smile 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0535 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.