Загрузка процессора

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Загрузка процессора

Сообщение GM » 06.11.2005 (Вс) 14:26

Собственно как мне измерить загрузку процессора(в процентах), для указаного процесса.
Как понимаю нужно взять GetProcessTimes, через некоторый промежуток времени еще раз GetProcessTimes и потом искать какое-то соотношение. Да? Если да, то какое?
الفيجوال بيسك الرابح

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 06.11.2005 (Вс) 14:31

Отношение разницы GetProcessTimes-ов к длине промежутка.
Изображение

Lunatic
Обычный пользователь
Обычный пользователь
 
Сообщения: 98
Зарегистрирован: 04.03.2008 (Вт) 17:33

Re: Загрузка процессора

Сообщение Lunatic » 26.05.2009 (Вт) 22:37

Можно поподробней. Как я понял нам нужно получить разницу между ответами, но как это сделать с помощью GetProcessTimes я так и не понял, она ведь вроде служит для возврата времени работы процесса

Нужно сделать что-то вроде?:
Код: Выделить всё
Private Type FILETIME
        dwLowDateTime As Long
        dwHighDateTime As Long
End Type
Private Declare Function GetProcessTimes Lib "kernel32" (ByVal hProcess As Long, lpCreationTime As FILETIME, lpExitTime As FILETIME, lpKernelTime As FILETIME, lpUserTime As FILETIME) As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Command1_Click()
    Dim FT1(3) As FILETIME
    Dim FT2(3) As FILETIME
    Dim HT As Long, LT As Long, cHWND As Long
    cHWND = GetCurrentProcess
    GetProcessTimes cHWND, FT1(0), FT1(1), FT1(2), FT1(3)
    Sleep 1000
    GetProcessTimes cHWND, FT2(0), FT2(1), FT2(2), FT2(3)
   
    For I = 0 To 3
    TMP = TMP & FT1(I).dwLowDateTime & ":" & FT1(I).dwHighDateTime & vbCrLf
    tmp2 = tmp2 & FT2(I).dwLowDateTime & ":" & FT2(I).dwHighDateTime & vbCrLf
    Next I
    MsgBox TMP & vbCrLf & tmp2
End Sub


Но ведь ни единый параметр не меняется, пытался и грузить свой процесс таймером, однак нет никаких различий

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Re: Загрузка процессора

Сообщение GM » 26.05.2009 (Вт) 22:43

Спасибо. Я уже за 4 года как ни страноо нашел ответ и написал свой таск-менеджер з блек-джеком и ... :)
الفيجوال بيسك الرابح

Lunatic
Обычный пользователь
Обычный пользователь
 
Сообщения: 98
Зарегистрирован: 04.03.2008 (Вт) 17:33

Re: Загрузка процессора

Сообщение Lunatic » 26.05.2009 (Вт) 23:01

Вот я и прошу помощи)) Делись менеджером....)

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Re: Загрузка процессора

Сообщение GM » 26.05.2009 (Вт) 23:30

Менеджер я уже вряд ли найду, но могу что по памяти подсказать:
Код: Выделить всё
GetProcessTimes cHWND, FT1(0), FT1(1), FT1(2), FT1(3)
    Sleep 1000
    GetProcessTimes cHWND, FT2(0), FT2(1), FT2(2), FT2(3)

Так поток "спит", ясно что ничего не изменится.
Попробуй, открыть чужой процесс который грузит систему и через таймер посмотреть изменение значений.
Только при открытии, нужно указать PROCESS_QUERY_INFORMATION.
الفيجوال بيسك الرابح

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Загрузка процессора

Сообщение Williams » 26.05.2009 (Вт) 23:31

Нда.. Трупику года 4, как-никак, а некрофилы все злобствуют ...
И вы думаете, что вас оставят в живых после прочтения этого поста?

Lunatic
Обычный пользователь
Обычный пользователь
 
Сообщения: 98
Зарегистрирован: 04.03.2008 (Вт) 17:33

Re: Загрузка процессора

Сообщение Lunatic » 27.05.2009 (Ср) 17:16

Какая разница сколько топику? Решил сделать доброе дело и не создавать новую тему, воспользовался поиском и набрёл сюда. Кстати с чужим процессом тоже не получаеться и вообще почему это функция возвращающая время создания процесса, должна возвращать разное время? Сколько не обращайся к процессу и с какими задержками, а если он был создан 25/05/09 17:10:03.104 то это время будет одинаковым. Кто-то что-то перепутал. Может нужно работать с GetThreadTimes, тогда более правдоподобно получаеться. Есть работающий процесс, создали нить, засекли время

Lunatic
Обычный пользователь
Обычный пользователь
 
Сообщения: 98
Зарегистрирован: 04.03.2008 (Вт) 17:33

Re: Загрузка процессора

Сообщение Lunatic » 30.05.2009 (Сб) 2:21

Ну и чё? Никто ничего не скажет?


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 72

    TopList