PDA

Просмотр полной версии : dll с окном


Heli
13.09.2008, 04:13
я внедряю длл в клиент линейки. необходимо, что б эта дллка создавала окно. я создал в дллке юнит с формой. код вроде этого, помещенный в основную функцию длл-ки, не дает нужного результата
Form1:=TForm1.Create(Application);
Form1.Show;
После внедрения на мгновение появляется это окошко, и сразу пропадает, без возможности переключиться на него.
Если делать ShowModal то окно видно, но оно естественно модальное)
Вообще это я модифицирую длл-ку которую выложил Ptica, 2я версия из этого топика:
http://coderx.ru/showthread.php?t=329
Решил добавить туда простейший сниффер с функцией отправки, естественно с окошком.

Ну и собственно я уже думаю написать окно на винапи, но возможно мне ктото подскажет как более просто решить эту проблемму? Создание окна в длл-ке которая внедряется в линейку)
Да, линейка у меня запускается в оконном режиме.

alexsl
13.09.2008, 10:49
FormStyle := fsStayOnTop;

Heli
13.09.2008, 15:34
не помогло.. окно все так же появляется на мгновение и пропадает
а еще при закрытии линейки, даже если было модальное окно и оно было закрыто, выдается ошибка "Runtime error 217 at ..."

xkor
13.09.2008, 15:43
ты свою форму создаешь не в основном потоке приложения, от этого и все проблемы + эта форма наверняка не получает от винды сообщения так как их ей не передает обработчик сообщений от линейки, тебе надо както содать ловушку для сообщений, и передавать их своей форме или линейке...

Добавлено через 56 секунд
хотя формы в длл никогда не пихал так что может с чем и наврал...

alexsl
13.09.2008, 16:52
ИМХО если не путаю, вроде было , что-то связанное с хендлами надо передать при создании формы хэндл длл.

при создании ---
старыйхэндл:=application.handle;
application.handle:=полученный хэндл длл;
.... ....
при/перед разрушении формы
application.handle:=старыйхэндл;

зы: а вообще поищи на форумах по delphi

Heli
13.09.2008, 18:40
проблему решил, перенес создание формы из основной функции длл-ки в другое место(пока что для теста в функцию длл-ки processpacket, придумываю че нить по лучше)

Cryptо
14.09.2008, 01:47
проблему решил, перенес создание формы из основной функции длл-ки в другое место(пока что для теста в функцию длл-ки processpacket, придумываю че нить по лучше)

Не надолго, эта проблема не решаема

Heli
14.09.2008, 04:29
хз щас все работает
другой вопрос, как юзать функции этой длл в юните с формой? ) который в этой длл

Cryptо
14.09.2008, 05:15
хз щас все работает
другой вопрос, как юзать функции этой длл в юните с формой? ) который в этой длл

Что работает ? форма ? а ты с ней начни ченить делать подинамичней и будешь одарен многими виолейшинами.