Связывающий объект

Связывающий объект - это самый легкий способ поместить exe-файл в проект MMB. Он станет частью плеера: например, Flash-ролик в формате исполняемого файла, Блокнот с текстом, ваш инсталлятор, другое независимое MMB-приложение и так далее...
Смотрите файл binding.mbd, находящийся в папке примеров проектов и показывающий использование Блокнота и Редактора реестра на страницах проекта. Данный проект протестирован в Win 2000 и Win 98SE.

Примечание: Не все exe-файлы могут быть связаны с проектом, но для большинства это возможно (например, вы даже можете связать CompactDraw или PhotoBrush). Некоторые приложения могут не работать со связывающим объектом и вызвать "зависание" системы - сохраняйте проект чаще. Другие приложения вообще не могут использоваться в связывающем объекте или отображать при запуске "мусор" (WinAmp). Для того чтобы открыть файл определенного формата в сопоставленном ему приложении, недостаточно указать только имя файла. Вы должны указать путь к исполняемому файлу программы, затем параметр (путь к файлу).
Вы можете скрыть главное меню, строку состояния или панели инструментов связанного приложения.
Связывающие объекты имеют много преимуществ - у вас нет необходимости создавать особую версию исполняемого файла, никакого ActiveX, никаких DLL. Вы можете использовать несколько связывающих объектов на одной странице, даже на верхнем мастер-слое...

Взаимодействие между MMB и связывающим объектом

MMB может посылать команды меню связывающему объекту. Команда меню представляет собой индекс пункта в главном меню связанного приложения. Отсчет индексов в главном меню начинается с нуля.

SendCommand("Binder","1,12")

Пример: связанное приложение - Блокнот.


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

Передача строки связывающему объекту

Чтобы передать строку связанному приложению (в нашем случае Блокноту), мы можем использовать команду MMB - Clipboard.
Сначала мы копируем строку в буфер обмена, затем выполняем в Блокноте команды "Выделить все" и "Вставить".
Смотрите нижеприведенный код:

C$='Привет от MMB!'
Clipboard("SEND","C$")
** Выделить все
SendCommand("Binder","1,12")
** Вставить
SendCommand("Binder","1,4")

Таким же образом мы можем получить текст из связывающего объекта.
Сначала выделим в Блокноте текст, скопируем его и получим строку из буфера обмена.

** Выделить все
SendCommand("Binder","1,12")
** Копировать
SendCommand("Binder","1,3")
Clipboard("GET","C$")
** Отображение текста
LoadText("Text","C$")

Завершение связанного приложения
- Уничтожить процесс
(Terminate Process) - по умолчанию (жесткий метод завершения приложения, который не позволяет ему выполнить какие-либо действия).
- Отправка команды завершения и ожидание (Send Close and wait). Этот метод мягче и позволяет приложению выполнить завершающие операции (например, спросить о сохранении изменений и т.д.). Если приложение не завершается первым способом, то попробуйте воспользоваться этим методом.

Завершение при выходе со страницы (Un-Bind on Page Exit) - по умолчанию. Если пользователь переходит на другую страницу, то связанное приложение завершается. Это означает, что всякий раз, когда вы попадаете на страницу со связывающим объектом, связанное приложение запускается снова. Обычно это полезно при использовании Flash-анимации в качестве связанного приложения - у вас нет необходимости воспроизводить ролик в то время, когда пользователь находится на другой странице.

Скрыть меню (Hide Menu) - Скрывает главное меню связанного приложения. Если приложение имеет меню нестандартного размера или необходимо скрыть область большей высоты, то используйте дополнительные опции (Advanced).

Скрыть регулятор размера окна (Hide Sizing Grip) - некоторые приложения позволяют изменять размер окна с помощью регулятора (например, Блокнот). С помощью этой опции вы можете скрыть регулятор, чтобы пользователь не мог изменять размер связанного приложения.

Дополнительные опции (Advanced Properties)
Позволяют определить заголовок окна:

Заголовок окна должен содержать текст (Client Main Window must have string)
Заголовок окна не должен содержать текст (Client Main Window must NOT have string)

Некоторые сложные приложения могут иметь множество дочерних окон - MMB не всегда может верно определить, какое из окон связанного приложения требуется отобразить в связывающем объекте. Вы можете указать, какой текст должен или не должен содержать заголовок окна приложения. Если оба поля пустые, то эта опция не используется.

Примечание: В простых приложениях (таких как Блокнот, Flash-плеер и т.д.) вы не должны беспокоиться об этом. Вы должны использовать эту опцию только в том случае, если MMB выбирает неверное окно для отображения связанного приложения.

Ожидание перед связыванием (Wait Before Binding) - некоторые приложения требуют определенного времени для запуска, поэтому MMB может не обнаружить окно программы (он может попытаться найти окно в то время, когда приложение выполняет подготовку к запуску и еще не создало окно). Эта опция позволяет задать таймаут для запуска приложения.

Срезать окно приложения сверху/снизу (Additional Cut Client From Top/Bottom) - вы можете просто срезать окно связанного приложения сверху или снизу. Эта опция великолепно подходит в том случае, если вы хотите скрыть панель инструментов или строку состояния приложения.