![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как открыть dll засунутую вexe'шник как ресурс [D5, WinXP]
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.