Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как открыть dll засунутую вexe'шник как ресурс [D5, WinXP]


Страницы:   1 2 3

azatsh ©   (2010-06-23 11:40:00) 

Вобщем я подключаю dll'ку как ресурс к своему exe'шнику. Далее во время выполнения программы мне нужно суметь открыть эту библиотеку и работать с ней как с библиотекой. Способ вытащить ресурс и сохранить в файл а потом открыть через LoadLibrary мне не подходит!


Leonid Troyanovsky   (2010-06-23 19:25:00) [21]


> ~AQUARIUS~ ©   (23.06.10 19:19) [20]

> В чем тогда преимущество однофайловой программы, если теперь
> для нее нужно еще и инсталятор который будет создавать ярлык,
>  плюс тогда уже нужно и деинсталятор чтобы хвосты подчистить

Однофайловую не я заказывал.
Впрочем, и для однофайловой нужен инсталятор/деинсталятор.
См. также http://podgoretsky.com/OtherParts/DM/BadWill.aspx

--
Regards, LVT.


~AQUARIUS~   (2010-06-23 19:19:00) [22]


> Leonid Troyanovsky ©   (23.06.10 16:27) [19]
> Это задача инсталятора:
> создать необходимый ярлык(и).
>
> --Regards, LVT.


В чем тогда преимущество однофайловой программы, если теперь для нее нужно еще и инсталятор который будет создавать ярлык, плюс тогда уже нужно и деинсталятор чтобы хвосты подчистить ;-D


Leonid Troyanovsky   (2010-06-23 16:27:00) [23]


> ~AQUARIUS~ ©   (23.06.10 15:02) [14]

> запускать через командную строку rundll передавая ему путь
> к длл и нужные параметры - удобнее чем два раза щелкнуть
> в проводнике по значке программы и не парить себе мозги

Это задача инсталятора: создать необходимый ярлык(и).

--
Regards, LVT.


Anatoly Podgoretsky   (2010-06-23 15:43:00) [24]

> ~AQUARIUS~  (23.06.2010 15:02:14)  [14]

Тебе надо программиста пригласить.


Anatoly Podgoretsky   (2010-06-23 15:41:00) [25]

> azatsh  (23.06.2010 11:57:05)  [5]

Еще раз врать не хорошо. Ехе видишь ли он может записать, а ДЛЛ нет. Ню ню.


Anatoly Podgoretsky   (2010-06-23 15:40:00) [26]

> azatsh  (23.06.2010 11:48:03)  [3]

Врать не хорошо.


Anatoly Podgoretsky   (2010-06-23 15:40:00) [27]

> azatsh  (23.06.2010 11:40:00)  [0]

Зачем ты это творишь.
Вытаскивать из ресурса ничего не надо, надо просто просто положить рядом.


~AQUARIUS~   (2010-06-23 15:02:00) [28]


> Leonid Troyanovsky ©
> Поставлять только dll, а rundll найдется.

Представляю себе как интересно будет убеждать конечного пользователя (может даже и какую-то блондинку :-) ) что запускать через командную строку rundll передавая ему путь к длл и нужные параметры - удобнее чем два раза щелкнуть в проводнике по значке программы и не парить себе мозги


Сергей М.   (2010-06-23 13:12:00) [29]

- Что, Данила-мастер, не выходит твоя DLL из EXE ?
- Ох не выходит(
- А нефих было засовывать !


Игорь Шевченко   (2010-06-23 13:00:00) [30]


> Способ вытащить ресурс и сохранить в файл а потом открыть
> через LoadLibrary мне не подходит!


Другого нет или он крив до необычайности


Leonid Troyanovsky   (2010-06-23 12:38:00) [31]


> ~AQUARIUS~ ©   (23.06.10 12:21) [9]

> сделаны только в длл (хуки например)

Поставлять только dll, а rundll найдется.

--
Regards, LVT.


Сергей М.   (2010-06-23 12:31:00) [32]


> вещи которые могут быть сделаны только в длл (хуки например)


1. Не всякий хук требует DLL.
2. Если таки требует, но это идет вразрез с "правилом", то значит что-то либо "правило" вывосано из пальца либо что-то не ладно в консерватории)


~AQUARIUS~   (2010-06-23 12:21:00) [33]


> ...в то время как ничто не мешает просто перенести нужную функц-
> ть из проекта dll в проект exe ?)

Не всё можно перенести в ехе, есть вещи которые могут быть сделаны только в длл (хуки например)


Плаг Инь   (2010-06-23 12:18:00) [34]

Теоретически... это могут быть плагины, которые, в зависимости от версии программы, прилинковываются к EXE. Указал при компиляции, какие ресурсы линковать, а потом, при выполнении - провел поиск в прилинкованных ресурсах, и, если нашел, то загрузил в адресное пространство процесса и используешь. Одному клиенту слинковал одно. Другому -другое. Клиент видит единственный EXE. А что там внутри - ему знать не надо. Да и при работе программы разворачивать все это на диске клиента -не всегда возможная реализация. На самом деле, красивее было бы развернуть все это в памяти и использовать. Или даже, например, из БД подгружать модули.

К сожалению, такой возможности легально - не существует. То есть, в интернете есть множество полу- и недорешений, намеков, идей и фантазий, зависящих от конкретной версии ОС, да и использующих такие лазейки, что порой от одного прочтений плохо становится. Но чего-то реально работающего, красивого и надежного - нет.


~AQUARIUS~   (2010-06-23 12:18:00) [35]

Есть папка, называется Application Data. Она всегда доступна на запись т.к. специально предназначеня для того чтобы приложения хранили там настройки, временные файлы и т.д. Можете создать там подпапку и извлекать длл туда:
function GetAppDataDir: string;
var Buf: array [0..MAX_PATH] of WChar;
begin
 FillChar(Buf, SizeOf(buf), 0);
 if ShGetSpecialFolderPath(0, Buf, CSIDL_APPDATA, false) then Result := Buf
   else Result := '';
 if Result <> '' then Result := IncludeTrailingPathDelimiter(trim(Result));
end;

Еще для этих целей можно использовать папку %TEMP%


Сергей М.   (2010-06-23 12:07:00) [36]


> это мой проект


Ну раз твой, то нашиша пихать его в ресурс и иметь при этом геморрой, в то время как ничто не мешает просто перенести нужную функц-ть из проекта dll в проект exe ?)


azatsh   (2010-06-23 11:57:00) [37]

проблема в том что создание файла на диске может быть невозможным. а прячу dll в экзешнике потому что правила такие что ничего кроме экзе файла не должно быть


Leonid Troyanovsky   (2010-06-23 11:52:00) [38]


> azatsh   (23.06.10 11:48) [3]

> что красть? это мой проект!)

dll?

--
Regards, LVT.


azatsh   (2010-06-23 11:48:00) [39]

что красть? это мой проект!)


Leonid Troyanovsky   (2010-06-23 11:46:00) [40]


> azatsh   (23.06.10 11:40)  

>  Далее во время выполнения программы мне нужно суметь открыть
> эту библиотеку и работать с ней как с библиотекой.

Красть грешно.

--
Regards, LVT.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо