![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 26.02.2013
Сообщений: 66
|
![]()
Представьте себе жизненный цикл экземпляра класса объекта:
создание (инициализация), вызовы методов, присваивание значений полям, и так, пока не наступит Destroy. Можно ли обращаться к этому экземпляру из разных других процессов? Если поместить описание класса в dll, то эти разные процессы будут для себя создавать разные экземпляры. Если объявить переменную типа этого класса в программе, текущие значения будут жить, пока прогу не закроют, но как извне обращаться к его методам? Существует ли технология обособленных объектов? |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 21.10.2015
Сообщений: 1,361
|
![]()
DСОМ, COM ...
|
![]() |
![]() |
![]() |
#3 | |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]() Цитата:
API скайпа (COM), он один, а программ, обращающихся к нему через API - много. |
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 26.02.2013
Сообщений: 66
|
![]()
А имеется ли что-то подобное в Lazarus?
Может это TSimpleIPCServer? Если да, то где бы инструкцию про него найти? |
![]() |
![]() |
![]() |
#5 | |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
IPC - способ обмена данными между процессами. Это не то что вам надо.
Цитата:
Только в windows можно создать некий интерфейс, зарегистрировать в системе, и только тогда его смогут использовать другие приложения. Если не винда, то только интерфейсы в чистом виде (нет автомат. счетчика ссылок) + обращение возможно максимум из подключаемых к процессу библиотек. |
|
![]() |
![]() |
![]() |
#6 | |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,926
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#7 | |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]() Цитата:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
|
![]() |
![]() |
![]() |
#8 | |
Пользователь
Регистрация: 26.02.2013
Сообщений: 66
|
![]() Цитата:
Так когда один процесс обратится к другому через СОМ-интерфейс, он разве не данные от него в итоге получит? Можно же в одном процессе вызвать функцию, которое передаст текущее значение поля объекта из другого процесса? |
|
![]() |
![]() |
![]() |
#9 | |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]() Цитата:
проблема только в том, что программа-ядро должно дать актуальную версию интерфейса подключения, или же поддерживать все предыдущие, где одна из них известна программе-клиенту. Опять же, мы говорим об обмене данными. Для использования рабочего экземпляра класса в другой области памяти (характерно DLL), можно использовать только COM (на сколько я знаю), т.е. программа-ядро реализует и предоставляет некий IManager, а программы-клиенты реализующие IPlugin и получающие при инициализации IManager, могут с ним работать. А вот для использования той же области памяти (класс, переменная) другим процессом тут уже не знаю, скорее всего OLE-что-то из этой области. Вон, MSWork к примеру. Хочешь, новый запусти. НЕ хочешь, подключись к существующему, если можешь... Последний раз редактировалось Человек_Борща; 25.01.2016 в 14:09. |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работать, чтобы жить, или жить, чтобы работать? | Arigato | Свободное общение | 33 | 27.06.2015 13:39 |
Объект String в памяти | 9esa | Общие вопросы C/C++ | 19 | 25.04.2012 02:37 |
выделение памяти под объект | VIK_aka_TOR | Общие вопросы Delphi | 4 | 15.02.2012 19:20 |
Если Вам скажут, что Вам жить 2 года, как вы будете жить? | grenles | Свободное общение | 51 | 15.11.2010 21:59 |
Числа отдельно, хлам отдельно | Keetotko | Общие вопросы C/C++ | 6 | 18.10.2010 18:15 |