Здравствуйте, Strannic, Вы писали:
S>Не сочтите совсем за деревянного, но что-то в этой жизни я безвозвратно упустил....
S>Бипы в ДЛЛ, а как я понимаю и выполнение ее, идут лишь в случае если повесить после запуска потока месадж. Т.е. пока висит месадж плагин крутиться, и как бы работает, но как только я его закрою — все — обработка его завершается. Почему??? Т.е. ДЛЛ работает пока явно держать систему на диалоге? Понимаю, что не так, а в чем тогда дело?
S>Даже если я просто вешал пустой цикл после вызова функции из ДЛЛ, то работа с этой ДЛЛ (бипы по таймеру) прекращалась.
Поток заканчивает свою работу после того как выходит из метода Execute — надеюсь это понятно.
Возьми класс который я тебе написал перед этим.
Сделай так:
procedure TPluginThread.MyMessage1(var Message: TMessage);
begin
StartPlugin
end;
procedure TPluginThread.MyMessage2(var Message: TMessage);
begin
StopPlugin;
Terminate;
end;
{На старте сервиса}
.......
FMyThread := TPluginThread.Create (True);
FMyThread.Resume;
PostMessage (MyThread.WndHandle, MY_MESSAGE1, 0, 0);
....
{На остановке сервиса}
if FMyThread <> nil then
SendMessage (MyThread.WndHandle, MY_MESSAGE2, 0, 0); { дождаться завершения }