Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Функция получения дескриптора потока по его идентификатору для Win 9X,ME,WinNT All.


Автор: Girder 6.12.2004, 23:51
OpenThread - Функция получения дескриптора потока по его идентификатору для Win 9X,ME,WinNT All.

PS: данная функция присутствует только в старших версиях NT и ME, в младших версиях есть NTOpenThread. При этом в Win 9X - её вообще нет... smile

Функция:
Код

const
  THREAD_TERMINATE               =$0001;
  THREAD_SUSPEND_RESUME          =$0002;
  THREAD_GET_CONTEXT             =$0008;
  THREAD_SET_CONTEXT             =$0010;
  THREAD_SET_INFORMATION         =$0020;
  THREAD_QUERY_INFORMATION       =$0040;
  THREAD_SET_THREAD_TOKEN        =$0080;
  THREAD_IMPERSONATE             =$0100;
  THREAD_DIRECT_IMPERSONATION    =$0200;
  THREAD_ALL_ACCESS              = STANDARD_RIGHTS_REQUIRED or
                                   SYNCHRONIZE or $3FF; // == $1F03FF;

function OpenThread(dwDesiredAccess:DWord;bInheritHandle:Bool;dwThreadId:DWord):Cardinal;
//Функция получения дескриптора потока по его идентификатору для Win 9X,ME,WinNT All
//dwDesiredAccess - флаги доступа к потоку
//bInheritHandle - флаг наследования дескриптора
//dwThreadId - идентификатор потока


В примере рассматривается алгоритм поиска потока отвечающий за панель задач. Основан он на том что если поток остановить(а для этого мы должны получить дескриптор потока с соответствующими правами) и обратится к его любым методам и свойствам из другого потока, то поток инициатор обращения тоже "как бы уснет"... smile. Для этого используется SendMessage(TrayWnd,SW_Show,0,0) - которая будет ждать результат  smile обработки сообщения...  smile 

В архиве: сама функция и пример её использования... smile
http://forum.vingrad.ru/index.php?act=module&module=vingradfaq&target=download_file&articleid=1975&attachid=1

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)