Главная страница
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.034 c
14-1117426539
SPeller
2005-05-30 08:15
2005.06.29
Глюки :)


11-1101629746
MTsv DN
2004-11-28 11:15
2005.06.29
И снова про DLL :o)


1-1118127057
-=snoop=-
2005-06-07 10:50
2005.06.29
добавление объекта на форму через код....


1-1117605615
scolopax
2005-06-01 10:00
2005.06.29
Проблема с кодировкой


14-1117127529
palva
2005-05-26 21:12
2005.06.29
Про гнилой строй