Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2012, 14:48   #1
Lauri
Форумчанин
 
Регистрация: 01.04.2010
Сообщений: 171
По умолчанию Вопрос по DLL

Имеется два простых вопроса
1) Может ли длл выгрузить себя? Например программа динамически вызывает из длл функцию, а та по завершению функции выгружает свою длл из памяти.
2) Что можно придумать что бы мою длл кроме моей программы другие заюзать не смогли? Есть же программы которые вроде находять експортируемые функции в длл. И получается можна написать программу и заюзать мою длл зная экспортируемую функцию.
Lauri вне форума Ответить с цитированием
Старый 19.02.2012, 15:34   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Что можно придумать что бы мою длл кроме моей программы другие заюзать не смогли?
Практически ничего... Разве что зашифровать протекторами...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.02.2012, 18:46   #3
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

А как ты DLL к программе подключаешь? Используй LoadLibrary и FreeLibrary
FaTaL вне форума Ответить с цитированием
Старый 19.02.2012, 18:55   #4
Lauri
Форумчанин
 
Регистрация: 01.04.2010
Сообщений: 171
По умолчанию

Цитата:
Сообщение от FaTaL Посмотреть сообщение
А как ты DLL к программе подключаешь? Используй LoadLibrary и FreeLibrary
Код:
 @StartModule := nil;
    LibHandle := LoadLibrary(Pchar(fname1));
    if LibHandle >= 32 then begin
     @StartModule := GetProcAddress(LibHandle,'StartModule');
     if @StartModule <> nil then
      StartModule(WideString(ss[6]));
вот так, только может ли сама длл освободить себя из памяти?
Lauri вне форума Ответить с цитированием
Старый 20.02.2012, 08:40   #5
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

А зачем DLL самой себя выгружать?
Поставь просто в своём коде после
if @StartModule <> nil then
StartModule(WideString(ss[6]));
FreeLibrary (LibHandle);
DLL после того как отработает метод StartModule выгрузится из памяти.
FaTaL вне форума Ответить с цитированием
Старый 20.02.2012, 10:05   #6
Lauri
Форумчанин
 
Регистрация: 01.04.2010
Сообщений: 171
По умолчанию

Цитата:
Сообщение от FaTaL Посмотреть сообщение
А зачем DLL самой себя выгружать?
Поставь просто в своём коде после
if @StartModule <> nil then
StartModule(WideString(ss[6]));
FreeLibrary (LibHandle);
DLL после того как отработает метод StartModule выгрузится из памяти.
У меня в процедуре которую вызываю стартуют потоки. И работают пока не передам в процедуру другой параметр - остановки. Вот и думаю как лучше всё это сделать
Lauri вне форума Ответить с цитированием
Старый 20.02.2012, 14:51   #7
Noor
Участник клуба
 
Аватар для Noor
 
Регистрация: 01.11.2006
Сообщений: 1,051
По умолчанию

Цитата:
Сообщение от Lauri Посмотреть сообщение
2) Есть же программы которые вроде находять експортируемые функции в длл. И получается можна написать программу и заюзать мою длл зная экспортируемую функцию.
Иметь название функции не достаточно, нужно знать какие параметры она принимает на обработку
Noor вне форума Ответить с цитированием
Старый 20.02.2012, 16:08   #8
Lauri
Форумчанин
 
Регистрация: 01.04.2010
Сообщений: 171
По умолчанию

Цитата:
Сообщение от Noor Посмотреть сообщение
Иметь название функции не достаточно, нужно знать какие параметры она принимает на обработку
Ну это понятно но вроде тоже вытянуть можна.
Лад, второй вопрос закрыли. Спасибо за ответы, а вот первый - актуальный. Как отпимизировать освобождение из памяти длл. Процедура многопоточно работает с интернетом и завершается принимая и обрабатывая текстовую команду из программы
Lauri вне форума Ответить с цитированием
Старый 20.02.2012, 16:41   #9
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

Ну как пошлёшь текстовую команду так и выгружай через FreeLibrary. В чем проблема не пойму?
FaTaL вне форума Ответить с цитированием
Старый 20.02.2012, 20:35   #10
Lauri
Форумчанин
 
Регистрация: 01.04.2010
Сообщений: 171
По умолчанию

Цитата:
Сообщение от FaTaL Посмотреть сообщение
Ну как пошлёшь текстовую команду так и выгружай через FreeLibrary. В чем проблема не пойму?
Проблема в том что у меня одна функция вызова для нескольких библиотек и это обязательное условие, и другие dll не обрабатывают одинаковые команды.
Lauri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по DLL MS_CHESTER Visual C++ 3 31.10.2011 18:05
Вопрос о DLL kettanaito Общие вопросы Delphi 12 25.08.2011 21:54
Вопрос по dll ahpun Win Api 9 09.08.2011 13:41
Вопрос по dll Waqq Общие вопросы Delphi 4 20.02.2011 15:06
Вопрос о dll Altera Общие вопросы Delphi 9 26.04.2008 06:55