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

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

как получить хэндл потока [D7, WinXP]


Gukov ©   (2007-01-31 03:13:00) 

Есть хэндл окна, как получить хэндл потока, т.е.:
var
 HW: HWND;
 ProcessId, HProcess, ThreadId, HThread: Cardinal;
...
 HW:=FindWindow(nil,'Chessmaster 10th Edition');
 if HW > 0 then begin
   ThreadId:=GetWindowThreadProcessId(HW,ProcessId);
   HProcess:=OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
   HThread:=?????????????;
   ...
   SuspendThread(HThread);
 end;
 ...


Джо   (2007-02-01 03:25:00) [1]

CreateToolhelp32Snapshot с соотв. флугами и затем Thread32First, Thread32Next. Это в TlHelp32.pas. Подробности есть в MSDN, с примерами. Самому сейчас написать пример нет времени, сорри. Но там несложно.


Asteroid   (2007-02-01 03:23:00) [2]

uses TlHelp32;
Далее CreateToolhelp32Snapshot, которая вернет хэндл "снимка" всех процессов и потоков в них. После чего перебираем потоки через Thread32First/Next и берем нужные.


Gukov   (2007-02-01 02:08:00) [3]

Спасиб !
Можно еще вопрос:
Как получить список всех потоков в процессе ?


Джо   (2007-01-31 03:45:00) [4]

> [2] Gukov   (31.01.07 03:41)
>
> > OpenThread
>
> Как ее вызвать ? Этой функции нет ни в Windows.pas ни в
> Help Windows SDK.

Зато она (ее описание) есть в MSDN.


Gukov   (2007-01-31 03:41:00) [5]


> OpenThread

Как ее вызвать ? Этой функции нет ни в Windows.pas ни в Help Windows SDK.


Джо   (2007-01-31 03:21:00) [6]

OpenThread, начиная с Windows Me.


Наверх

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