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

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

Запуск функции [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]

Создай новый поток или процесс.


Наверх

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