|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
03.06.2010, 12:33 | #1 |
Пользователь
Регистрация: 03.06.2010
Сообщений: 19
|
Dll в ресурсах и вызов функций из нее
Подскажите, пожалуйста, если такое вообще возможно сделать:
Dll MyDll "MYDLL.dll" - вот таким образом с расширением rs помещаю dll в ресурс Потом компилю, или как это назвать, получается файл с расширением .RES и объемом равным объему dll. Подключаю ее к проекту {$R s1.RES} И вот теперь вопрос. Как вызвать функцию,которая в dll, не записывая содержимое потока в файл?Т.е. вызвать функцию из потока, или из ресурса? |
03.06.2010, 13:23 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,707
|
Загрузите ее динамически в память..
|
03.06.2010, 13:41 | #3 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Это сложно, фактически нужно "вручную" правильно развернуть PE-образ в памяти, обработать релоки, таблицу экспорта... то есть сделать всю ту работу, которую обычно выполняет загрузчик.
http://www.rsdn.ru/article/baseserv/peloader.xml
пыщь
|
03.06.2010, 13:51 | #4 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
...зачем вообще подобные извращения, не проще-ли юнитом оформить.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
03.06.2010, 13:56 | #5 |
Пользователь
Регистрация: 03.06.2010
Сообщений: 19
|
Спасибо, за ответы.
1. p51x - ты имеешь в виду динамически загрузить длл в память? 2. JTG - знаком с этой статьей. Это действительно сложно 3. raxp. Это нужно для того что dll-ка не болталась рядом с проектом, чтобы ее случайно не удалил Юзверь. Ты имеешь ввиду сделать из dll еще один модуль? И тогда еще вопрос.Что если из dll сделать ocx библиотеку, зарегистрировать ее и попробовать пользоваться.Только что пришла эта мысль в голову. |
03.06.2010, 14:06 | #6 |
Programming...
Форумчанин
Регистрация: 13.03.2010
Сообщений: 198
|
да можна и с .ocx , да луче сделаи как сказал raxp зделаи в один модуль
Код:
|
03.06.2010, 14:12 | #7 |
Пользователь
Регистрация: 03.06.2010
Сообщений: 19
|
Жаль, но это исключено. Dll чужая и нет исходников, поэтому модуль ни как не сделать
|
03.06.2010, 14:15 | #8 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
слушайте, ну что за извращения, посмотрите нормальные программы, они хранят свои DLL либо рядом с собой, либо в папке System32.
и уж точно никто так не извращается. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
09.06.2010, 12:42 | #9 |
Пользователь
Регистрация: 03.06.2010
Сообщений: 19
|
Наконец-то!Получилось, напишу как это сделать, возможно в будущем кому-то пригодится:
1) Засовываем dll в ресурс - как это сделать много источников 2) Скачиваем из интернета TFakeDll - к нему хорошая документация на русском 3) - FindResource(GetModuleHandle(nil) ,<имя рерурса>,<тип ресурса>); - LoadResource(GetModuleHandle(nil) ,<возврат от первого шага>) - po:=LockResource(<возврат второго шага>);//вернет указатель на ресурс(из ответа Пепела Феникса) 4) FakeDll.InjectDll( po, true); - функция из модуля FakeDll Proc := FakeDll.GetFDProcAddress(Proc1Name) ; - Proc1Name - имя из dll функции, которая находится в ресурсе Proc; - опля,вызываем и получаем результат!!! |
09.06.2010, 12:51 | #10 | |
not
Участник клуба
Регистрация: 27.06.2009
Сообщений: 1,399
|
Цитата:
GetProcAddress |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как передать какртинку и получить картику из dll?(она не в ресурсах) | puga555 | Общие вопросы Delphi | 7 | 22.12.2009 16:37 |
Ошибка при выхове функций Bass.dll из другой DLL | SalasAndriy | Общие вопросы Delphi | 7 | 21.10.2009 23:36 |
Повторный вызов функций | Roman | Общие вопросы C/C++ | 1 | 10.06.2009 14:48 |
Вызов функции из dll-ки | VVVadim | Общие вопросы Delphi | 2 | 28.04.2009 10:37 |
вызов из dll не ShowModal. | Roof | Общие вопросы Delphi | 7 | 25.07.2008 15:22 |