Форум: "WinAPI";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
ВнизКак получить ссылку на работающий 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 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c