Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.29;
Скачать: CL | DM;

Вниз

Информация о процессе   Найти похожие ветки 

 
n0wheremany ©   (2005-05-09 23:20) [0]

Доброго времени суток.
Моя проблема не новая и по моему на этом форуме эти вопросы уже рассматривались но конкретных ответов по моему мнению небыло...

Вот проблемы:
1. Как узнать скока времени сожрал процесс у процессора в процентах
2. Кто запустил процесс
(Как у TaskMan.exe в WinXP) // Можно для 9x, если возможно

Вот 1 ответ


var usertim,kerneltim:int64;
var usertim0,kerneltim0:int64;

function GetProcessUssage(PID:DWord):integer;
// This procesedure for All Windows
var pHandle : THandle;
   kr,us:_large_integer;
   usertim1,kerneltim1:int64;
   crt,ext,ker,usr:_filetime;
begin
pHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, PId);
getprocesstimes(pHandle,crt,ext,ker,usr);

us.LowPart:=usr.dwLowDateTime;
us.HighPart:=usr.dwHighDateTime;

kr.LowPart:=ker.dwLowDateTime;
kr.HighPart:=ker.dwHighDateTime;

usertim:=us.QuadPart;
kerneltim:=kr.QuadPart;

usertim1:=usertim-usertim0;
kerneltim1:=kerneltim-kerneltim0;

if usertim1<>0 then result:=round((usertim1/(usertim1+kerneltim1+1))*100) else result:=0;

usertim0:=usertim;
kerneltim0:=kerneltim;

CloseHandle(pHandle);
end;


Взял с КД
Тока у меня один процесс занял более 100% - Это возможно?

Вот 2 ответ


type
SID_AND_ATTRIBUTES=record
   Sid:PSID;
   Attributes:DWORD;
end;
TOKEN_USER=record
User:SID_AND_ATTRIBUTES;
end;
PTOKEN_USER=^TOKEN_USER;

...
var
AcctName: PChar;
DomainName:PChar;
dwAcctName:Cardinal;
dwDomainName:DWORD;
ProcHand: THandle;
TokenHand: THandle;
buffer:PTOKEN_USER;
bufsize:DWORD;
begin
...
//В ProcHand ХЭНДЛ процесса

      OpenProcessToken(ProcHand,TOKEN_READ,TokenHand);
      GetTokenInformation(TokenHand,TokenUser,nil,0,bufsize);
      buffer:=PTOKEN_USER(GlobalAlloc(GMEM_FIXED,bufsize));
      GetTokenInformation(TokenHand,TokenUser,buffer,bufsize,bufsize);
      LookupAccountSid(nil,buffer^.User.Sid,AcctName,dwAcctName,DomainName,dwDomainName,eUse);
      AcctName := PChar(GlobalAlloc(GMEM_FIXED,dwAcctName+1));
      DomainName := PChar(GlobalAlloc(GMEM_FIXED,dwDomainName+1));
      LookupAccountSid(nil,buffer^.User.Sid,AcctName,dwAcctName,DomainName,dwDomainName,eUse ) ;

//получаем в AcctName имя владельца процесса
...
end;


Взято с КД (вопрос № 22763)

Тока чёта не работает? Может кто исправит

Может кто знает другие способы получения такой информацмм


 
Ученик   (2005-05-10 00:17) [1]

>n0wheremany ©   (09.05.05 23:20)  
pHandle всегда правильный и getprocesstimes возвращает True ?



Страницы: 1 вся ветка

Текущий архив: 2005.06.29;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.028 c
6-1112032939
Nes
2005-03-28 22:02
2005.06.29
* HTTP Tunneling? Бред или...


4-1115288509
Gamid
2005-05-05 14:21
2005.06.29
Стандартное окно Windows выбора папки


3-1116836022
Cat
2005-05-23 12:13
2005.06.29
Есть ли оператор case в хранимых процедурах?


9-1111516682
Sphinx
2005-03-22 21:38
2005.06.29
Плагин к 3DS Max 7 и .X файлы


1-1117632969
Noise
2005-06-01 17:36
2005.06.29
Вставить картинку в Memo