хочу встроить в dll окно для вывода некоторой информации.
при добавлении в проект формы (File->New->Form), даже не добавляя какой-либо код в тело dll, клиент вылетает с предложением отправить отчет "дяде биллу".
пробовал добавить
Код:
int somefunc()
{
TForm1* form = new TForm1( 0 );
form->ShowModal();
delete form;
}
somefunc() гарантировано вызывается клиентом.
окно появляется. процесс загрузки останавливается. закрываю. грузится дальше, появляется рамка окна л2 и сразу отчет "дяде биллу"...
клиент ц4
библиотека dsetup
куда копнуть, или как правильно создать окно?
__________________
C++Builder 6, Delphi 7, RAD Studio XE2, MS VC++...
Последний раз редактировалось Elecktron, 03.02.2012 в 08:35.
В коде длл чето нето походу.
Если ты создаеш форму в dllmain а инжектиш лоадером тоже плохая манера влекущая кучу "неуловимых" ошибок.
Добавлено через 9 минут
Цитата:
Сообщение от Guzh
я создаю в отдельном потоке,на делфе так:
Delphi Код:
procedure TNewThreadradar.Execute;
begin
Application.Initialize;
Application.CreateForm(TFRadarPiu, FRadarPiu);
Application.Run;
end;
угу. Дочерние потоки не могут быть исполнены пока инициализация всех длл не завершитса. В основном же, обращение к апи любых длл кроме kernel32 может повлеч краш. Так как они могут быть на тот момент недогружены.
для потока л2 еще хуже, он останетса в оконной процедуре формы и дальше ниче не выполнит
__________________
читернуть бы ништяг
Последний раз редактировалось mira, 03.02.2012 в 10:12.
Причина: Добавлено сообщение
procedure DLLEntryPoint(dwReason: DWORD); export;
begin
case dwReason of
DLL_PROCESS_ATTACH:
begin
//.......
SetForm:=TSetForm.Create(nil);
SetForm.MemoLog.Clear;
//.......
end;
DLL_PROCESS_DETACH:
begin
end;
end
end;
Хз, у меня такой код работал, на событиях контролов были прикручены вызовы функций клиента. Единственное, это dll ка прикрученная к engine.dll с помощью PETools, а не на лету внедряемая.
я пишу dsetup.dll
функция под номером 11 в любом случае вызывается клиентом.
вызывать форму пробовал и в 11 функции, и в DllEntryPoint, и в InitThread.
в лучшем случае форма появляется и останавливается загрузка, после закрытия формы ошибка...
без формы все работает: адднетворк перехватывается, пакеты обрабатываются, в лог файл пишет.
но стоит только добавить форму в проект (File->New->Form) и сразу облом.
пробовал переделать под многопоточную dll - то же самое.
на данный момент проблема не в вызове формы, а в работе клиента с dll в которой форма.
__________________
C++Builder 6, Delphi 7, RAD Studio XE2, MS VC++...
если и есть косяк в реализации, то только в том, что добавляет автоматом борланд.
в своем коде я уверен. без формы все работает.
а вот что не так, я не понял.
__________________
C++Builder 6, Delphi 7, RAD Studio XE2, MS VC++...