Взаимодействие программ между собой...

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем prosto_lynx, 30 сен 2010.

Статус темы:
Закрыта.
  1. prosto_lynx

    prosto_lynx Гость

    В книге "Borland C++ Builder. Освой самостоятельно за 21 день" в главе 15 описывается работа с OLE. В качестве примера взяты программы из стандартного набора Builder 6.0, расположенные в ...Examples\Apps\Autocon и ...Examples\Apps\Autosrv.
    При запуске всё работает (в autocon задаю изменения для Edit-поля из Autosrv и успешно всё работает)
    НО в них листинги другие... Там, как я понимаю сделано: через tlb, т.е. библиотеки типов (на сколько я понял из wiki это другой подход)

    Народ подскажите, как лучше сделать и где более наглядно и понятно написано об этих способах?
    Мне нужно сделать отдельную прогу, которую я смогу запускать, как самостоятельный модуль (exe-файл, который запускает пользователь и в окне меняет настройки). Но еще и должна быть возможность запустить её из второй моей программы, которая запустив её самостоятельно выполняет в ней некоторые действия и закрывает её (вторая прога должна всё это проделать без вмешательства пользователя.)
     
  2. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Еще рас опиши проблему по шагам, что нужно сделать, из чего, и как это сделанное должно работать...
    А там уже разберем пример....
     
  3. prosto_lynx

    prosto_lynx Гость

    Есть две программы (обе в процессе написания и могут быть изменены так, как нужно):
    1ая: при запуске выдает форму с настройками, пользователь вводит все необходимые ему настройки и по кнопке "применить" прога настраивает внешнее устройство.
    2ая: занимается всякими другими вещами, но должна иметь возможность, используя первую прогу, настроить внешнее устройство под себя (т.е. запустить первую прогу и задать ей определенные настройки для устройства.)

    Как лучше реализовать в данном случае взаимодействие программ?

    P.S. Я сейчас решил делать так: вторая прога просто перед запуском первой создает на диске файл с настройками, а первая (если этот файл существует) настраивает устройство, удаляет файл и сама закрывается.
    Мне кажется подход не очень хороший, но в других способах не получилось разобраться.((
     
  4. alexsid

    alexsid Гость

    любой IPC подойдет:
    1. Pipes, Named pipes
    2. sockets (tcp/udp)
    3. комаандная строка
    4. Файлы
    5. разделяемая память
    6. можно в винде искать контролы и прямо в них данные вставлять
    и т.д.
     
  5. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Ну кстати подход ты выбрал правельный... Только в данном случае лучше использовать ни файл, а реестр-Windows.... Такой вариант наилучший для твоей задачи и удалять ничего не нужно.... Кстати вторая тоже может первоначальные настройки от туда же читать.... Что бы все парамметры с нуля не указывать....

    А так "alexsid" все правельно перечислил....
     
  6. prosto_lynx

    prosto_lynx Гость

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

    А именно:
    Может ли вторая прога по завершении возвращать какие-то параметры первой (например, как функция может иметь выходные параметры)?
    Или может быть можно во вторую прогу сразу передавать ссылку на область памяти с этими переменными, что бы она работала сразу с ними, а не с их копиями?
     
  7. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.468
    Симпатии:
    27
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей