![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запуск функции [D3, D5, D6]
kkostik © (2003-02-03 17:32:00)Люди добрые, помагите, как запустить из программы на выполнение паралельную функцию, причём если прага выгрузилась то функия продолжает выполняться пока не закончит своё выполнение. Тобишь запустить функию в другом адресном пространстве.
R4D][ (2003-02-03 18:05:00) [1]Берем любой хэндл, например, Progman"a, потом с помощью функции GetWindowsThreadProcessID получаем его ThreadID, потом устанавливаем SetWindowsHookEx на этот процесс(последний параметр не ноль, а ThreadID+ловушка типа WH_GETMESSAGE), PostMessage(сообщение какое-нибудь WM_USER+87) хэндлу Progman"a, sleep на 10 мс, чтобы сообщение успело дойти и UnHook ловушке. В функцие обработчике пишем, чтобы ловились WM_USER+87 и код той функции, которую ты хочешь запустить.
Работает даже в том случае, когда твоя программа(основная) выгрузилась.
Digitman (2003-02-03 17:49:00) [2]
> kkostik
В Маздае единственным док.способом будет старт потока в чужом ВАП через глоб.хук
gsu (2003-02-03 17:44:00) [3]прага, чехия, пиво ...
kkostik (2003-02-03 17:41:00) [4]но мне и в W9x надо, а новый поток по моему в том же адресном пространсве будет выполняться и при снятии задачи крякнется вместе с исходной прогой
Игорь Шевченко (2003-02-03 17:41:00) [5]Русский выучить.
Digitman (2003-02-03 17:36:00) [6]в NT/W2k - см.CreateRemoteThread()
Archon Kazansky (2003-02-03 17:34:00) [7]Создай новый поток или процесс.