![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как завершить работу DLL? [D7, XP]
Илья2 © (2010-10-06 20:36:00)Здравствуйте. При невыполнении некоторого условия работа DLL должна быть завершена. Какую функцию использовать? ExitProcess тут ведь не подойдет?
Спасибо.
icWasya (2010-10-07 09:14:00) [1]не UnloadLibrary, а FreeLibrary, а параметром - то что вернула LoadLibrary.
Rouse_ (2010-10-06 23:58:00) [2]Параметры у UnLoadLibrary не подскажешь? :)
Petr V. Abramov (2010-10-06 23:56:00) [3]если DLL грузится через LoadLibray, то выгружается, предсказуемо, через UnLoadLibrary.
тонкость одна: если dll использовала vcl, то
1. все объекты создавать руками, не отдавать это vcl. т.е никаких автокрейтформ.
2. все, что создано, перед unload должно быть уничтожено. руками
иначе error-217 на выходе из exe. формально работе не мешает, но орет "программер - козел"
я делал так: в любом плагине предусмотрена ф-ция "приготовиться к смерти", ее вызывали перед unloaddll
Leonid Troyanovsky (2010-10-06 22:10:00) [4]
> Илья2 (06.10.10 21:46) [4]
> Нет, мне нужно из самой DLL.
http://msdn.microsoft.com/en-us/library/ms683153(v=VS.85).aspx
--
Regards, LVT.
Сергей М. (2010-10-06 22:04:00) [5]Цитата из стандартной справки:
On Windows, setting the ExitCode variable to a value other than 0 in the initialization section of a unit will make loading of a DLL fail (DllMain will return false). You can also set ExitCode in code called from DllProc or DllProcEx to signal failure of loading.
Сергей М. (2010-10-06 22:01:00) [6]
> Илья2 (06.10.10 21:46) [4]
> работа DLL
Это не "работа DLL", а работа процедуры инициализацииDLL.
Плохиш (2010-10-06 21:51:00) [7]exit
Илья2 (2010-10-06 21:46:00) [8]
> Rouse_ © (06.10.10 21:44) [3]
>
> FreeLibrary?
Нет, мне нужно из самой DLL. Ладно, всем спасибо.
Rouse_ (2010-10-06 21:44:00) [9]FreeLibrary?
Игорь Шевченко (2010-10-06 21:29:00) [10]
> Как завершить работу DLL
никак, DLL не завершаемая сущность
Илья2 (2010-10-06 20:41:00) [11]Ситуация такая:
begin
if FindWindow(classname, windowname) > 0 then
// нужно завершить работу
код ниже
end.