Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Список потоков (Threads) для процесса [WinXP]


GMan ©   (2005-02-02 16:11:00) 

Решил уже для полноты картины (неутешительной) спросить, знает ли кто-нибудь как получить список потоков для выбранного процесса?


DeadMeat   (2005-02-02 21:29:00) [1]


> ну и как соотносится тема вопроса с назначением ф-ции, хотя
> бы по ее имени ?


> Спасибо, но я уже смотрел этот пример. Мне он не подходит,
> потому что придется слишком много переписывать, т.к. я получаю
> список процессов след. образом
:

Ну не хочет человек переписывать... Ну чего тут поделать... ;)

---
...Death Is Only The Begining...


alpet   (2005-02-02 18:50:00) [2]

Потоки можно узнать с помощью toolhelp функций: Thread32first, Thread32next. Получить дескрипторы потоков, через OpenThread (Win2k +) или подключившись как отладчик к процессу.


Digitman   (2005-02-02 17:12:00) [3]


> GMan   (02.02.05 16:25) [2]


галиматья какая-то ..

у тебя какой вопрос был ?

> как получить список потоков


а ты что пишешь ?


> GetProcessList()


переводя с буржуйского на русский ты пишешь "ПолучитьСписок Процессов"

ну и как соотносится тема вопроса с назначением ф-ции, хотя бы по ее имени ?


GMan   (2005-02-02 16:25:00) [4]

Спасибо, но я уже смотрел этот пример. Мне он не подходит, потому что придется слишком много переписывать, т.к. я получаю список процессов след. образом:

procedure GetProcessList();
var
 pe:TProcessEntry32;
 ph, snap:THandle;
 mh:hmodule;
 procs:array[0..$fff] of dword;
 count, cm:cardinal;
 i, j, z:integer;
 ModName:array[0..max_path] of char;
begin
   if not EnumProcesses(@procs, sizeof(procs), count) then
   begin
     exit;
   end;

   for i:= 0 to count div 4 - 1 do
     begin
       ph:=OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,
                     false, procs[i]);
       if ph>0 then
       begin
         EnumProcessModules(ph, @mh, 4, cm);
         if GetModuleFileNameEx(ph, mh, ModName, sizeof(ModName)) > 0 then
         begin
           _ProcPath := String(ModName);
           _PID := procs[i];
           _ProcHandle := '$' + IntToHex(ph, 8);
           if GetProcessMemoryInfo(ph, @FCounters, SizeOf(FCounters)) then
           begin
             _ProcCurrMem := FCounters.WorkingSetSize div 1024;
           end;
           _ProcPriority := GetPriorityClassString(GetPriorityClass(ph));
           GetFileOwner(_ProcPath, Domain, Username);
           _ProcOwner := Domain + '@' + Username;
         end;
         CloseHandle(ph);
       end;
       AddRows(1);
     end;
end;


Игорь Шевченко   (2005-02-02 16:19:00) [5]

http://www.schevchenko.net.ru/SRC/QuerySystemInformation_60.zip


Наверх

Титульная страница Поиск, карта сайта Написать письмо