Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3      [все]
 Интегрировать одно приложение в другое  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 711
Одно приложение Т! - на Дельфи 10.2. В него надо вставить моё приложение Е! (на Дельфи 10.3.1) /в один из табов (TTabSheet)/. Как это лучше провернуть? Из Т! в Е! передаётся параметром 1 номер ID, и Е! секунд 10 его обрабатывает. Хорошо бы задержки при открытии табы избежать, а также избежать зависания основного приложения Т!.

PS Исходные коды обоих у меня есть.
15 авг 19, 19:17    [21950452]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Vlad F
Member

Откуда:
Сообщений: 871
Victor Cookin,

А грабить корованы они совместно не должны?
15 авг 19, 20:23    [21950488]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 711
Vlad F, грабить корованы лучше водиночку
15 авг 19, 20:38    [21950492]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Vlad F
Member

Откуда:
Сообщений: 871
Victor Cookin,

А как же шайка? - разве она не повышает вероятность достижения успеха в обозначенном мероприятии?
И, между прочим, почему бы тем программам, для тех же целей, попросту не обмениваться необходимыми данными для самостоятельной их визуализации?
15 авг 19, 20:57    [21950501]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
rgreat
Member

Откуда:
Сообщений: 5211
CleintMainForm.ParentWindow:=ParentTab.Handle;
15 авг 19, 20:59    [21950502]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48141

Victor Cookin
Исходные коды обоих у меня есть.

В этом случае проще всего подключить модули одного к другому и сделать из них монолит-кирпич.

Posted via ActualForum NNTP Server 1.5

15 авг 19, 21:14    [21950506]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Vlad F
Member

Откуда:
Сообщений: 871
Одно на все приложение, короче. Раз уж все исходники есть.))
15 авг 19, 21:22    [21950512]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
ziv-2014
Member

Откуда:
Сообщений: 401
Chrome работает с несколькими процессами. Можешь посмотреть код, как там реализовано данная задача.
15 авг 19, 21:40    [21950520]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 711
Dimitry Sibiryakov,

Хотелось бы ещё оставить возможность STANDALONE работы моего E!
15 авг 19, 22:00    [21950534]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 711
rgreat
CleintMainForm.ParentWindow:=ParentTab.Handle;

Да это понятно, там надо ещё CreateParams переписать, чтобы кнопок Min/Max/Close в заголовке не было (да и самого заголовка не было)
15 авг 19, 22:02    [21950537]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 711
ziv-2014,

А что Chrome на Дельфи написан?
15 авг 19, 22:05    [21950540]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48141

Victor Cookin
Хотелось бы ещё оставить возможность STANDALONE работы моего E!

То есть собирать из одной и той же пачки модулей три разных приложения - mission
impossible для современных программистов? Ню-ню...

Posted via ActualForum NNTP Server 1.5

15 авг 19, 22:09    [21950544]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
rgreat
Member

Откуда:
Сообщений: 5211
Victor Cookin
Rgreat, Да это понятно, там надо ещё CreateParams переписать, чтобы кнопок Min/Max/Close в заголовке не было (да и самого заголовка не было)
Не надо там переписывать.

    FDockMyForm.BorderStyle:=bsNone;
    FDockMyForm.Position:=poDesigned;
    FDockMyForm.Left:=0;
    FDockMyForm.Top:=0;
    FDockMyForm.Constraints.MinHeight:=0;
    FDockMyForm.Constraints.MinWidth:=0;
    FDockMyForm.Width:=Res[1];
    FDockMyForm.Height:=Res[2];


Ну и события на ресайз таба передавай.
15 авг 19, 22:13    [21950546]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Gator
Member

Откуда: Москва
Сообщений: 14910
Я склеивал приложения через обычную панель.

Показывал здесь давным давно ещё в XP, notepad, sol.exe
может, сохранилось где-то.

Окно внешнего приложения (handle) и handle панелки связаны через её Tag и SetWindowLong легко ресайзится и прочее дельфийское.
Соответственно, для ExternalApp - SetWindowPos и проч. WinAPI.
Управление менюшками и кнопками извне ExternalApp может быть через колбеки или мессагам.
Единственно, не надо приклеиваться самому к себе
15 авг 19, 22:59    [21950565]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
ёёёёё
Member

Откуда:
Сообщений: 701
Victor Cookin
Одно приложение Т! - на Дельфи 10.2. В него надо вставить моё приложение Е! (на Дельфи 10.3.1) /в один из табов (TTabSheet)/. Как это лучше провернуть? Из Т! в Е! передаётся параметром 1 номер ID, и Е! секунд 10 его обрабатывает. Хорошо бы задержки при открытии табы избежать, а также избежать зависания основного приложения Т!.

PS Исходные коды обоих у меня есть.

Очень просто. Второе приложение оформляешь как COM - сервер. Особо не изгаляясь, дельфийским визардом.
А в первом приложении пользуешься вторым: размещаешь в табе OLE - контейнер, в контейнер помещаешь второе. Вот и всё, работы на 5 минут. Ну ладно, на 30.

Чтобы не зависало - при запуске первого приложения второе запускать параллельно.
Да, оле - контейнер не всегда хорош в мелочах, но обычно его достаточно.
16 авг 19, 00:13    [21950612]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 60151
Victor Cookin
В него надо вставить моё приложение Е! (на Дельфи 10.3.1) /в один из табов (TTabSheet)/. Как это лучше провернуть? Из Т! в Е! передаётся параметром 1 номер ID, и Е! секунд 10 его обрабатывает. Хорошо бы задержки при открытии табы избежать, а также избежать зависания основного приложения Т!.
А это нужно для вновь создаваемого процесса или для уже работающих тоже?
16 авг 19, 21:13    [21951434]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
ziv-2014
Member

Откуда:
Сообщений: 401
Victor Cookin
ziv-2014,

А что Chrome на Дельфи написан?

А какая разница, api оно и в windows api.
16 авг 19, 21:24    [21951441]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 711
Рустам, для вновь создаваемого. Дело в том, что включение нового приложения в зоопарк имеющихся - длительный процесс. Потому ТЗ было - включить в состав имеющегося. Разрабатывается и тестируется оно, однако, как standalone
19 авг 19, 22:59    [21952970]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 60151
Victor Cookin> Рустам, для вновь создаваемого.

Тогда с чем именно возникли проблемы?
Потоки, "докинг" окна, еще что-то?

Posted via ActualForum NNTP Server 1.5

22 авг 19, 16:19    [21955695]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 711
Гаджимурадов Рустам,

Проблем никаких не возникло. Советуюсь просто.
С одной стороны хочется приложения разделить, ведь если просто "засунуть"(мою главную форму в их TTabSheet), то есть риск что полезут в мои модули и что-то сломают.

Так что думаю насчёт bpl . Но вот с чем столкнулся - bpl подлинковывает другие required bpl, короче, если где-то (3-rd party package source code) я что-то поменял, то мой собственный bpl этого не видит, видимо надо пересобрать пакеты
22 авг 19, 19:32    [21955909]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
ziv-2014
Member

Откуда:
Сообщений: 401
Victor Cookin
Гаджимурадов Рустам,

Проблем никаких не возникло. Советуюсь просто.
С одной стороны хочется приложения разделить, ведь если просто "засунуть"(мою главную форму в их TTabSheet), то есть риск что полезут в мои модули и что-то сломают.

Так что думаю насчёт bpl . Но вот с чем столкнулся - bpl подлинковывает другие required bpl, короче, если где-то (3-rd party package source code) я что-то поменял, то мой собственный bpl этого не видит, видимо надо пересобрать пакеты

Создай свой bpl с нужным тебе rtl.
22 авг 19, 19:42    [21955923]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Vlad F
Member

Откуда:
Сообщений: 871
Victor Cookin,

Если идти именно этим путем, то можно оформить отчуждаемый функционал со всеми необходимыми формами в виде обычной DLL с общим менеджером памяти (SimpleShareMem). Тоже не без гимора, конечно, ибо требует также передачи в нее головного экземпляра Application и т.д., но в принципе все работает, я даже корректны к БД туда передаю.
22 авг 19, 20:11    [21955948]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Gator
Member

Откуда: Москва
Сообщений: 14910
Victor Cookin
риск что полезут в мои модули и что-то сломают.

Так запрети править, лицензируй. Повесь табличку "Работает - не трожь!", "Не влезай! Убьёт"
Victor Cookin
если где-то (3-rd party package source code) я что-то поменял, то мой собственный bpl этого не видит, видимо надо пересобрать пакеты
. Конечно надо. BPL скомпилированная давно об изменениях не знает. И новую сборку ещё надо будет разослать заинтересованным... Которые тоже не знают, кого там жареный петух клюнул...
22 авг 19, 21:45    [21956034]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 711
Всё сделал, всё нравится. Даже в своём приложении текстовый редактор - динамически загружаемый пакет с экспортируемыми функциями:

exports Show;
exports CloseForm;
exports Clear;
exports Add;
exports GetStrings;

Но к сожалению Основной проект тогда тоже должен быть скомпилирован с Runtime packages. А этого никто из заказчиков не хочет.
Надо переделывать теперь в DLL.
5 сен 19, 23:17    [21964989]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Vlad F
Member

Откуда:
Сообщений: 871
Victor Cookin,

Все перечисленные издержки выбранного способа были хорошо известны с самого начала.
Странно, что ты счёл необходимым таки хлопнуть этими граблями по лбу.
6 сен 19, 18:46    [21965605]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 711
А можно ли сделать так, чтобы основное приложение всё-таки грузило пакеты, даже если скомпилировано без ?
Потому что не проходит только нахождение классов из пакета, а сам пакет загружается и функции из него тоже находятся.
Может сделать промежуточный безклассовый пакет, который сам будет загружать основной (в моём случае - пока - редактор)
6 сен 19, 18:52    [21965613]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 711
Vlad F
Странно, что ты счёл необходимым таки хлопнуть этими граблями по лбу.


"Пусть путь просветления иногда освещают удары по лбу орехов неожиданности" - лама Ринпоче
6 сен 19, 19:01    [21965625]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Vlad F
Member

Откуда:
Сообщений: 871
Victor Cookin,

Да-да, а в другой известной поговорке очень точно квалифицируется,
кто учится на чужих ошибках, а кто на своих.
6 сен 19, 19:09    [21965640]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
x1ca4064
Member

Откуда:
Сообщений: 1003
Victor Cookin,

А как Вы планируете использовать bpl, если трансляторы разные?
6 сен 19, 19:19    [21965659]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
alekcvp
Member

Откуда:
Сообщений: 1485
Victor Cookin
Потому что не проходит только нахождение классов из пакета, а сам пакет загружается и функции из него тоже находятся.

http://fire-monkey.ru/topic/1729-импорт-класса-из-bpl-loadpackage/
6 сен 19, 19:21    [21965664]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
rgreat
Member

Откуда:
Сообщений: 5211
x1ca4064
Victor Cookin,

А как Вы планируете использовать bpl, если трансляторы разные?
Несколько копий bpl в разных каталогах. Ы?
6 сен 19, 19:24    [21965675]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
rgreat
Member

Откуда:
Сообщений: 5211
А еще лучше все перекомпилить втихую без runtime packages. ;)
6 сен 19, 19:25    [21965676]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 711
Я правильно понимаю, что bpl всегда компилируются как бы с опцией "Build with runtime packages"
и эти "runtime packages" перечислены в списке Required?
6 сен 19, 19:41    [21965686]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 711
alekcvp,

Спасибо за ссылку. Из того, что написал Бровин, я понял, что основное приложение, скомпилированное с исползованием runtime пакетов, первым делом загрузит пакеты rtlxxx.bpl и vclxxx.bpl. И "слинкует" их динамически. Когда оно подгрузит мой bpl, то и мой сможет обратиться к слинкованным объектам.

Но что мешает приложению без runtime пакетов поделиться с моим пакетом той-же самой информацией - вся разница лишь что приложение их слинковало в момент создания.
7 сен 19, 00:34    [21965805]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
alekcvp
Member

Откуда:
Сообщений: 1485
Victor Cookin
Но что мешает приложению без runtime пакетов поделиться с моим пакетом той-же самой информацией - вся разница лишь что приложение их слинковало в момент создания.

То, что в памяти будут две копии rtl - одна, вкомпиленная в ваше приложение, вторая - из загруженного пакетом rtl*.bpl. И они между собой никак не пересекаются. Это та же проблема, что и с менеджером памяти в приложении и в dll.
7 сен 19, 11:33    [21965877]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
alekcvp
Member

Откуда:
Сообщений: 1485
Картинка с другого сайта.
7 сен 19, 11:44    [21965885]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
ziv-2014
Member

Откуда:
Сообщений: 401
Victor Cookin,
Можно указывать пакеты, с которыми нужна линковка. Можно сделать свой пакет с rtl и vcl и выбрать те модули, которые нужны. И дальше линковать приложения и dll с этим пакетом.
7 сен 19, 12:31    [21965909]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 711
alekcvp,

Ну с памятью проблему как-то решили, так и с адресами регистрации можно было бы.
9 сен 19, 22:54    [21967338]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 711
ziv-2014,

Но тогда всё равно же основное приложение надо будет "Link with Runtime Packages"
9 сен 19, 22:55    [21967340]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
ziv-2014
Member

Откуда:
Сообщений: 401
Victor Cookin
ziv-2014,

Но тогда всё равно же основное приложение надо будет "Link with Runtime Packages"

Да придется, удобно в общем.
10 сен 19, 09:50    [21967475]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 711
[quot ziv-2014]
Victor Cookin
Да придется, удобно в общем.


очань удобно и очень правильно с точки зрения архитектуры. С точки же зрения начальства - лишняя морока - распространять соответствующие bpl и перекомпилировать свои же пакеты с каждым переходом на новую версию дельфей
10 сен 19, 16:54    [21967931]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1996
>Victor Cookin, 15 авг 19, 19:17 [21950452]
>Одно приложение Т! - на Дельфи 10.2. В него надо вставить моё приложение Е!... Из Т! в Е! передаётся параметром 1 номер ID, и Е! секунд 10 его обрабатывает…
<Я не работаю с Дельфи (C#), но приходится постоянно вызывать другое приложение из моего. Делаю так (к примеру):
//-- Формируем параметры вызова Word 
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "" + "WINWORD.EXE" + "";
startInfo.Arguments = фд_док;
startInfo.WindowStyle = ProcessWindowStyle.Normal;
//-- Запускаем Word
using (Process word = Process.Start(startInfo)) { word.WaitForExit(); }
10 сен 19, 20:45    [21968113]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
ziv-2014
Member

Откуда:
Сообщений: 401
[quot Victor Cookin]
ziv-2014
пропущено...


очань удобно и очень правильно с точки зрения архитектуры. С точки же зрения начальства - лишняя морока - распространять соответствующие bpl и перекомпилировать свои же пакеты с каждым переходом на новую версию дельфей

А в чем морока? Делаем setup и устанавливаем bpl в нужную папку. Даже не всегда нужно перекомпилировать пакеты, если в rtl нет особых изменений. К слову можно сделать автоматически перекомпиляцию пакетов достаточно добавить в зависимые проекты и пакет каждый раз будет комплироваться перед компиляцией основного приложения.
11 сен 19, 10:24    [21968319]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 711
ziv-2014
А в чем морока? Делаем setup и устанавливаем bpl в нужную папку


Сотни пользователей. Не хочет начальство сетапов никаких.
11 сен 19, 17:41    [21968737]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
rgreat
Member

Откуда:
Сообщений: 5211
Victor Cookin,

Переводи все на веб.
11 сен 19, 18:11    [21968801]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Василий 2
Member

Откуда:
Сообщений: 700
Уж давно были посоветованы стандартный путь через СОМ и хакерский путь через встраивание окна. ТС уже неделю безрезультатно мусолит тему bpl.
11 сен 19, 18:41    [21968817]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3326
не созрел еще. пусть помучается пока.
12 сен 19, 16:03    [21969615]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 711
Отвечаю:

1) Тема закрыта, так как заказчик против BPL. BPL делается с полпинка, а на COM и DLL нет времени.
Тем не менее удивлён, что при создании BPL нельзя указать - не грузи Required сам, а полез к основному за ними. Ну и чтоб основное такие запросы понимало. И только если в основном требуемого моему BPLя нет, тогда только чтобы мой грузил это.
12 сен 19, 18:32    [21969740]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 711
Василий 2,

хакерский путь он и черезBPL был бы точно таким же - встраивание в имеющуюся TabSheet.
Design time я бы уж точно не делал.
12 сен 19, 18:33    [21969741]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48141

Victor Cookin
удивлён, что при создании BPL нельзя указать - не грузи Required сам, а полез к основному
за ними

Как ты себе представляешь "сказать загрузчику винды не грузить статически слинкованные
DLL-ки"?..

Posted via ActualForum NNTP Server 1.5

12 сен 19, 18:49    [21969761]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48141

То есть, конечно, не "статически", а "ранним связыванием".

Posted via ActualForum NNTP Server 1.5

12 сен 19, 18:53    [21969763]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 711
Dimitry Sibiryakov
То есть, конечно, не "статически", а "ранним связыванием".


Такой специфический bpl не должен лезть к системе за адресами, а - к основной программе. Наверно для этого надо изменить и принцип работы такого bpl и методы основной программы. Не думаю, что это невозможно. Тогда, кстати. будет можно использовать основную программу и bpl скомпилированные в разных версиях Дельфей (ну если вызовы совпадают по параметрам)
12 сен 19, 19:09    [21969777]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48141

Victor Cookin
Такой специфический bpl не должен лезть к системе за адресами, а - к основной программе.

Вернись уже на землю из теоретических высот и почитай что такое DLL (а BPL это и есть DLL)
и как они работают.

Posted via ActualForum NNTP Server 1.5

12 сен 19, 19:12    [21969779]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Gator
Member

Откуда: Москва
Сообщений: 14910
Dimitry Sibiryakov
Victor Cookin
Такой специфический bpl не должен лезть к системе за адресами, а - к основной программе.

Вернись уже на землю из теоретических высот и почитай что такое DLL (а BPL это и есть DLL)
и как они работают.
Да-да-да Линкер есть не что иное, как Разрешитель адресов.
12 сен 19, 19:20    [21969787]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
Vlad F
Member

Откуда:
Сообщений: 871
Кстати, оформить отчуждаемый функционал в виде ActiveX элемента ещё не предлагали?))
12 сен 19, 21:16    [21969899]     Ответить | Цитировать Сообщить модератору
 Re: Интегрировать одно приложение в другое  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1996
>Дополнение к 10 сен 19, 20:45 [21968113]
>...вызывать другое приложение…
<Приложение - любой .exe - шник
1. Запускаем .exe - шник
//-- Формируем параметры вызова приложения Хранилища 
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "" + гп.pth_Папки_ФП + "Start.exe" + "";
startInfo.Arguments = "241 " + lng_Разрешения.ToString() + " " + гп.tm_Запрос.ToString() + " " + @"""" + str_Соединение + @"""" +
        " " + @"""" + гп.str_ФИО + @"""" + " " + @"""" + гп.str_Псевдоним + @"""" + " " + @"""" + FS_СоединениеДФП.Replace(@"\","/") + @"""" + 
        " " + @"""" + usr + @"""" + " " + @"""" + psw + @"""" + " " + @"""" + zstr + @"""";
//-- Запускаем приложение
using (Process rar = Process.Start(startInfo)) { rar.WaitForExit(); } 

2. В вызванном .exe - шнике обрабатываем параметры запуска
  public partial class App : Application {
    private void app_Startup(object sender, StartupEventArgs e) {
      //-- Получим параметры инициализации приложения
      гп.max_Выборка = int.Parse(e.Args[0]);     //-- Получим максимальный объем набора в выборке в строках
      гп.lng_Разрешения = long.Parse(e.Args[1]); //-- Получим права пользователя для этого приложения
      гп.tm_Запрос = int.Parse(e.Args[2]);       //-- Получим предполагаемое максимальное время обработки запроса базой данных в секундах
      гп.str_Соединение = e.Args[3];             //-- Получим строку соединения с базой данных
      гп.str_ФИО = e.Args[4];                    //-- Получим ФИО пользователя
      гп.str_Псевдоним = e.Args[5];              //-- Получим Псевдоним пользователя
      гп.uri_ХранилищеДФП = e.Args[6];           //-- Получим строку доступа к шаре документов
      string usr = e.Args[7];                    //-- Доступ к шаре
      string psw = e.Args[8];                    //-- Доступ к шаре
    }
  }
12 сен 19, 23:41    [21969950]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3      [все]
Все форумы / Delphi Ответить