Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.04;
Скачать: [xml.tar.bz2];




Вниз

Люди, понимаю, что мне пить надо меньше, на как получить список процессов. 


NetBreaker666   (2001-12-25 16:16) [0]

Чегото я не нашел функции EnumThreads в SDK.
Тогда какой получать ???



Fellomena   (2001-12-26 16:02) [1]

http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1009290680&n=5
...да, Thread - это не процесс 8)



Vovchik   (2002-01-02 00:55) [2]

Есть принципиальные отличия получения списка процессов в Win9x и Win NT/2K.
Для Win9x (и Win 2K) пойдёт функция CreateToolhelp32Snapshot, Process32First, Process32Next и прочие с ними связанные (см. хелп).
Для Win NT по-другому:

uses windows,tlhelp32,sysutils;

function NtQuerySystemInformation(l:UINT;buff:Pointer;buffl:UINT;u:UINT):BOOL;stdcall;external "ntdll.dll";

type
ThreadInfo=record
ftCreationTime:FILETIME;
dwUnknown1:DWORD;
dwStartAddress:DWORD;
dwOwningPID:DWORD;
dwThreadID:DWORD;
dwCurrentPriority:DWORD;
dwBasePriority:DWORD;
dwContextSwitches:DWORD;
dwThreadState:DWORD;
dwUnknown2:DWORD;
dwUnknown3:DWORD;
dwUnknown4:DWORD;
dwUnknown5:DWORD;
dwUnknown6:DWORD;
dwUnknown7:DWORD;
end;

TProcessInfo=record
dwOffset:DWORD; // an ofset to the next Process structure
dwThreadCount:DWORD;
dwUnkown1:array[0..5] of DWORD;
ftCreationTime:FILETIME;
dwUnkown2:DWORD;
dwUnkown3:DWORD;
dwUnkown4:DWORD;
dwUnkown5:DWORD;
dwUnkown6:DWORD;
pszProcessName:PWideChar;
dwBasePriority:DWORD;
dwProcessID:DWORD;
dwParentProcessID:DWORD;
dwHandleCount:DWORD;
dwUnkown7:DWORD;
dwUnkown8:DWORD;
dwVirtualBytesPeak:DWORD;
dwVirtualBytes:DWORD;
dwPageFaults:DWORD;
dwWorkingSetPeak:DWORD;
dwWorkingSet:DWORD;
dwUnkown9:DWORD;
dwPagedPool:DWORD; // kbytes
dwUnkown10:DWORD;
dwNonPagedPool:DWORD; // kbytes
dwPageFileBytesPeak:DWORD;
dwPageFileBytes:DWORD;
dwPrivateBytes:DWORD;
dwUnkown11:DWORD;
dwUnkown12:DWORD;
dwUnkown13:DWORD;
dwUnkown14:DWORD;
ati:array[0..0] of ThreadInfo;
end;

var
h:THANDLE;
i:integer;
tt:UINT;
j:BOOL;
vt:PWideChar; // UNICODE
tinfo,tinf2:^ThreadInfo;
pinfo:^TProcessInfo;
f:file of byte;
buf:array of byte;
begin
tt:=20000;
SetLength(buf,tt);
j:=NtQuerySystemInformation(5,@buf[0],tt,0);
writeln(j);
writeln("Image":20,"PID":10,"Parent PID":10);
pinfo:=@buf[0];
while true do
begin
vt:=pinfo^.pszProcessName;
try
write(WideCharToString(vt):20);
except
write("Unknown Process":20);
end;
writeln(pinfo^.dwProcessID:10,pinfo^.dwParentProcessID:10);
if pinfo^.dwOffset=0 then break;
pinfo:=pointer(UINT(@pinfo^.dwOffset)+pinfo^.dwOffset);
end;
end.



otari   (2002-01-04 21:22) [3]

uses tlhelp32;



procedure TForm1.Button1Click(Sender: TObject);
var
I : Integer;
hSnapshoot : THandle;
pe32 : TProcessEntry32;
List : TStrings;
begin
memo1.lines.clear;
hSnapshoot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnapshoot = -1) then Exit;
pe32.dwSize := SizeOf(TProcessEntry32);
if (Process32First(hSnapshoot, pe32)) then repeat
I := memo1.Lines.Add(Format("%x, %x: %s", [pe32.th32ProcessID,
pe32.th32ParentProcessID,pe32.szExeFile]));
memo1.Lines.Objects[I] := Pointer(pe32.th32ProcessID);
until not Process32Next(hSnapshoot, pe32);
CloseHandle (hSnapshoot);

end;




Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.04;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.021 c
1-9240            romulas               2002-02-15 18:20  2002.03.04  
Help!!!


4-9322            cad                   2002-01-03 12:59  2002.03.04  
Имя пользователя windows


6-9248            [TLS]Lord             2001-12-11 01:59  2002.03.04  
Неужели нет ничего кроме NMSMTP?


4-9351            star                  2002-01-03 16:50  2002.03.04  
Посылает ли сетевая карта сообщения ?


6-9267            Shaman@mike           2001-12-03 15:22  2002.03.04  
Подскажи как можно изменить MAC адрес