Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.25;
Скачать: CL | DM;

Вниз

Как получить ссылку на работающий Thread имея его ID   Найти похожие ветки 

 
slaga ©   (2006-03-24 14:22) [0]

Добрый день.

У меня есть ThreadID, мне нужно остановить, закрыть, удалить этот поток, как мне получить такую возможность ?

Заранее спасибо.


 
Leonid Troyanovsky ©   (2006-03-24 14:24) [1]


> slaga ©   (24.03.06 14:22)  

> У меня есть ThreadID, мне нужно остановить, закрыть, удалить
> этот поток, как мне получить такую возможность ?


OpenThread.
Непонятно, только, что значит закрыть,
да, впрочем, и зачем.

--
Regards, LVT.


 
slaga ©   (2006-03-24 14:27) [2]

спасибо,
а вот такая конструкция не подойдет ?

 PostThreadMessage(ThreadID, WM_CLOSE, 0, 0)


 
Leonid Troyanovsky ©   (2006-03-24 14:32) [3]


> slaga ©   (24.03.06 14:27) [2]

> а вот такая конструкция не подойдет ?

>  PostThreadMessage(ThreadID, WM_CLOSE, 0, 0)


Потоку принято посылать WM_QUIT.
Оно может и подойти, если, конечно, у него
есть message loop.

--
Regards, LVT.


 
slaga ©   (2006-03-24 14:32) [4]

хм. а можна небольшой пример по использованию OpenThread (с подключаемыми модулями)


 
slaga ©   (2006-03-24 14:40) [5]

нашел такое:

function OpenThread(dwDesiredAccess: DWord; bInheritHandle: Bool;
dwThreadId: DWord): DWord; stdcall; external "kernel32.dll";

но не понимаю что с этим делать потом :(


 
Leonid Troyanovsky ©   (2006-03-24 15:25) [6]


> slaga ©   (24.03.06 14:40) [5]
> нашел такое:

> function OpenThread(dwDesiredAccess: DWord; bInheritHandle:
>  Bool;
> dwThreadId: DWord): DWord; stdcall; external "kernel32.dll";
>


Это оно и есть (правда,  результат принято возвращать как THandle ).
Константы dwDesiredAccess можно посмотреть в топике
http://groups.google.com/group/fido7.ru.delphi/browse_frm/thread/60e9dcc14ee5febe/18d621d0da3a07d7?#18d621d0da3a07d7

--
Regards, LVT.


 
slaga ©   (2006-03-24 16:03) [7]

а в каком модуле описывается THREAD_ALL_ACCESS


 
Игорь Шевченко ©   (2006-03-24 16:47) [8]


> а в каком модуле описывается THREAD_ALL_ACCESS


Windows.pas ?


 
Leonid Troyanovsky ©   (2006-03-24 16:54) [9]


> slaga ©   (24.03.06 16:03) [7]

> а в каком модуле описывается THREAD_ALL_ACCESS


В том обсуждении приводились значения

From JwaWinnt.pas available from http://delphi-jedi.org
(Win32 API Package in the API Library section):

THREAD_TERMINATE            = ($0001);
 {$EXTERNALSYM THREAD_TERMINATE}
 THREAD_SUSPEND_RESUME       = ($0002);
 {$EXTERNALSYM THREAD_SUSPEND_RESUME}
 THREAD_GET_CONTEXT          = ($0008);
 {$EXTERNALSYM THREAD_GET_CONTEXT}
 THREAD_SET_CONTEXT          = ($0010);
 {$EXTERNALSYM THREAD_SET_CONTEXT}
 THREAD_SET_INFORMATION      = ($0020);
 {$EXTERNALSYM THREAD_SET_INFORMATION}
 THREAD_QUERY_INFORMATION    = ($0040);
 {$EXTERNALSYM THREAD_QUERY_INFORMATION}
 THREAD_SET_THREAD_TOKEN     = ($0080);
 {$EXTERNALSYM THREAD_SET_THREAD_TOKEN}
 THREAD_IMPERSONATE          = ($0100);
 {$EXTERNALSYM THREAD_IMPERSONATE}
 THREAD_DIRECT_IMPERSONATION = ($0200);
 {$EXTERNALSYM THREAD_DIRECT_IMPERSONATION}

 THREAD_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or $3FF);
 {$EXTERNALSYM THREAD_ALL_ACCESS}

 SYNCHRONIZE              = ($00100000);
 {$EXTERNALSYM SYNCHRONIZE}

--
Regards, LVT.


 
slaga ©   (2006-03-24 16:55) [10]

в Windows.pas нет.

мне подсказывают что можно вот так:

const
 THREAD_ALL_ACCESS = $1F03FF;


 
Leonid Troyanovsky ©   (2006-03-24 16:56) [11]


> Игорь Шевченко ©   (24.03.06 16:47) [8]

> Windows.pas ?


Т.е.,  D7+ ?

--
Regards, LVT.


 
Игорь Шевченко ©   (2006-03-24 17:52) [12]

Leonid Troyanovsky ©   (24.03.06 16:56) [11]

Я же знак вопроса поставил :)



Страницы: 1 вся ветка

Текущий архив: 2006.06.25;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.048 c
3-1146568224
Рыспек
2006-05-02 15:10
2006.06.25
Возможно ли в DataSetProvider.DataSet указать TClientDаtaSet?


3-1146563364
D@Nger
2006-05-02 13:49
2006.06.25
запрет на редактирование в колонке DBGrid


2-1149666052
Fiallo4ka
2006-06-07 11:40
2006.06.25
ПАРОль


2-1149274678
deplhi
2006-06-02 22:57
2006.06.25
EOleSysError: Class not registered(и снова про СОМ)


15-1148583076
Аноним2000
2006-05-25 22:51
2006.06.25
Как получить ответ от Com-порта?