О команде RunMBD()
|
|
as-master | Дата: Понедельник, 10 Декабря 2007, 16:16 | Сообщение # 1 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Итак, суть вопроса вот в чем. Имеется одно окно приложения, скажем А. Из него командой RunMBD("B","") запускается другой проект, но В ТОМ ЖЕ САМОМ окне (ну то есть просто не указываем второй параметр). Итак, всё хорошо, поработали в окне В, теперь его надо закрыть. Закрываем, и... закрывается вся программа. А надо, чтобы при закрытии окна В окно А осталось на месте. Как, чёрт возьми? Что-то я туплю, кофия аппилса.
Да пребудет с вами ММВ!
|
|
| |
Alex3A | Дата: Понедельник, 10 Декабря 2007, 17:24 | Сообщение # 2 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| По логике вещей, надо бы, вместо закрытия окна делать RunMBD("А",""), ведь окно у нас одно!
|
|
| |
as-master | Дата: Понедельник, 10 Декабря 2007, 17:32 | Сообщение # 3 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Quote (Alex3A) RunMBD("А","") Гриня, ку-ку! (© Бурнаш из "Неуловимых мстителей") А - это никакой не MBD. Это нормальное скомпилированное приложение. Ведь запускаться-то программа как-то должна :)
Да пребудет с вами ММВ!
|
|
| |
Alex3A | Дата: Понедельник, 10 Декабря 2007, 17:42 | Сообщение # 4 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Это надо подумать и попробовать! Так сразу не скажу.
|
|
| |
as-master | Дата: Понедельник, 10 Декабря 2007, 17:59 | Сообщение # 5 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Ну по логике, когда надо закрыть окно В, вроде бы надо просто написать: Run("путь\A.exe") ExitTimer("100") Но тут вот есть какая сложность для меня. Представь себе, что структура проекта представляет собой вот это: И если путь к проекту В прописать легко: <SrcDir>\add\проект В.mbd то как прописать путь из проекта В в проект А.exe, я не понимаю... Слушай, а может быть проект В запускается вовсе как бы не из директории add, а из каталога <SrcDir>?
Да пребудет с вами ММВ!
|
|
| |
Alex3A | Дата: Понедельник, 10 Декабря 2007, 21:38 | Сообщение # 6 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Ну это не есть проблема! <SrcDir>\..\проект А.mbd Две точки это на папку в верх по дереву, со времен доса. \..\..\..\ на три папки
|
|
| |
as-master | Дата: Понедельник, 10 Декабря 2007, 22:00 | Сообщение # 7 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Quote (Alex3A) Две точки это на папку в верх по дереву Насколько я помню, такая штука работает в html но не работает в ММВ. Кажется, я даже проверял когда-то... На досуге проверю твою версию, но мне вот что думается. Ведь проект А запускается из каталога <SrcDir>, а проект В запускается в окне проекта А, следовательно в том же каталоге, то есть <SrcDir>. А если так, тогда нужно на кнопке закрытия проекта В всего лишь написать: Code Run("<SrcDir>\A.exe") ExitTimer("100") Надо будет попробовать. Но я все же жду других предложений: вдруг мы лоханулись и всё гораздо проще?
Да пребудет с вами ММВ!
|
|
| |
humanoid | Дата: Понедельник, 10 Декабря 2007, 22:37 | Сообщение # 8 |
Гуманоид
Группа: Проверенные
Сообщений: 406
Репутация: 3
Награды: 1
Статус: Offline
| Просто нужен гениальный подход:) Tут три состовляющие нужны - общий exe - назовоем его С.exe и два проекта A.mbd и B.mbd Оболочка - пустышка скомпилированная в EXE, которая вызывает при старте A.mbd
Hi, from Moon!
|
|
| |
as-master | Дата: Понедельник, 10 Декабря 2007, 22:50 | Сообщение # 9 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Quote (humanoid) Tут три состовляющие нужны - общий exe - назовоем его С.exe и два проекта A.mbd и B.mbd Ты можешь не верить, но я думал об этом. Действительно, тогда всё решаемо. Просто запускаешь RunMBD("A") и никаких проблем... Но проблема есть. Она в том, что "пустышка" будет занимать около 600 килобайт, плюс два проекта, они хоть и в *.mbd, но тоже немаленькие, потому-что с графикой. В итоге я получу общий вес программы на полмегабайта больше. Лишних полмегабайта. И что бы там ни говорил Пётр насчет размеров программ, если программа размещена в инете, никакие доводы не оправдывают лишних мегабайтов. Ведь так?...
Да пребудет с вами ММВ!
|
|
| |
humanoid | Дата: Понедельник, 10 Декабря 2007, 23:07 | Сообщение # 10 |
Гуманоид
Группа: Проверенные
Сообщений: 406
Репутация: 3
Награды: 1
Статус: Offline
| Quote Но проблема есть. Она в том, что "пустышка" будет занимать около 600 килобайт, плюс два проекта, они хоть и в *.mbd, но тоже немаленькие, потому-что с графикой. Ты уже паришся, конкретно... при компиляции в любом случае присоединяется ПЛЕЕР, какая нах разница, будет ли он работать пустышкой отдельно... или присобачен к какой-нибудь mbd (А или В)... Quote никакие доводы не оправдывают лишних мегабайтов. Ведь так?... Ой... у вас (не толькол у тебя) с вашим выкраиванием личних сто грамм, скоро паранойка разовьется... +\- 1 мегабайт это сегодня уже не актуально... Добавлено (10 Декабрь 2007, 23:07) --------------------------------------------- Можешь вообще ни чего не компилировать.... а сделать как раньше в старых версиях.... положить плеер впроект... и переименовать его именем соответсвующему имени проекта, который должен запуститься... myproject.mbd myproject.exe (переименованный Player.exe)
Hi, from Moon!
|
|
| |
Alex3A | Дата: Понедельник, 10 Декабря 2007, 23:40 | Сообщение # 11 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Quote Оболочка - пустышка скомпилированная в EXE Quote myproject.exe (переименованный Player.exe) Все верно, а проекты в mbd виде., а если это вас смущает, их расширения можно переименовать, а что бы плеер их кушал, надо в теле плеера изменить расширение на новое, я думаю вы найдете где, поищите в редакторе "mbd" (там оно вроде два раза, вторую часть), пару попыток и вы найдете где это находится. Я нашел быстро. А сам процес компиляции в основном сводится (мелочи опускаю) к пристыковке mbd к телу плеера (того что *.bin).
|
|
| |
as-master | Дата: Понедельник, 10 Декабря 2007, 23:44 | Сообщение # 12 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Quote (humanoid) +\- 1 мегабайт это сегодня уже не актуально Кому как. Тут ты не прав конкретно. Я лично знаю людей, которые говорят: ой, мне много качать, ой, я не могу это взять. Если для нас с тобой это не актуально, это не значит, что для всех. Еще полно людей, считающих трафик, время и свои жалкие рубли. Кстати, по большому счету я сам из них Quote (humanoid) Можешь вообще ни чего не компилировать.... а сделать как раньше в старых версиях.... положить плеер впроект... А вот эта мысль очень даже интересная!!! Я подумаю... Quote (Alex3A) а если это вас смущает, их расширения можно переименовать Ну, про это-то мы знаем Гыыы Всем спасибо!
Да пребудет с вами ММВ!
|
|
| |
humanoid | Дата: Вторник, 11 Декабря 2007, 00:03 | Сообщение # 13 |
Гуманоид
Группа: Проверенные
Сообщений: 406
Репутация: 3
Награды: 1
Статус: Offline
| Quote А вот эта мысль очень даже интересная!!! Я подумаю... - эта мысль стара как какашка мамонта... Ты просто не работал на очень древних версиях MMB, а раньше так и было (никаких компиляций) брался плеер и переименовывался, в то название которым ты обзывал проект... (кстати в самой первой из четверок, а именно в MMB v4.0 1999 года, стандалоне компиляции еще небыло).... Только не забудь при отправке в публикацию... зашить сами *.mbd проекты секретным слоем, там еще сохранилась эта функция - Compress & Export (add secure Layer) или просто паспортом... ___ И возвращаеясь к старому... какая разница в том, что ты сделаешь пустышку плеером? Присядь ... успокойся и подумай... пустышка (0 + плеер) + А + B = один скомпилированный (А+плеер) + B
Hi, from Moon!
Сообщение отредактировал humanoid - Вторник, 11 Декабря 2007, 00:26 |
|
| |
as-master | Дата: Вторник, 11 Декабря 2007, 00:31 | Сообщение # 14 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Quote (humanoid) Только не забудь при отправке в публикацию... зашить сами *.mbd проекты секретным слоем Ну, дружище, уж об этом-то я никогдане забываю. А кстати, как ты думаешь сделаны скины в моей программе "Автоплей-меню для мр3-коллекций"? Это именно mbd-файлы, переименованные в расширение skin. И разумеется, что ты их просто так не откроешь - они как раз и экспортированы командой Compress & Export с секретным уровнем. Quote (humanoid) Присядь ... успокойся и подумай... А мне торопиться особо некуда... Еще будет время подумать... Это так, кое-что планирую для ПОСЛЕДУЮЩИХ версий своей Кулинарной книжки. Раз пошла такая пьянка
Да пребудет с вами ММВ!
|
|
| |
Игорь | Дата: Вторник, 11 Декабря 2007, 06:47 | Сообщение # 15 |
Педагог
Группа: Проверенные
Сообщений: 331
Репутация: 0
Награды: 0
Статус: Offline
| Ребят, это... а я когда этот же вопрос поднимал... http://mmbuilder.ru/forum/12-255-1 Quote (humanoid) +\- 1 мегабайт это сегодня уже не актуально... Действительно... при скоростях 5-10 Кб/сек это да... У меня вот как раз вопрос давно созрел, не могу ничего сделать. Я говорил уже, тута http://mmbuilder.ru/forum/12-511-6207-16-1197017113, что при нажатии кнопки грузится внедренный проект с плагином изменения разрешения экрана, который делает свое дело и закрывается. На кнопку выхода я тоже сделал такую команду, но вот ерунда какая - он работает только на быстрых машинах. То есть нажал кнопку закрыть, загрузился проект, сменил разрешение на прежнее, закрылся, потом, после задержки, закрывается основной проект. НО! на медленных машинах он так не фурычит - не хватает задержки, что-ли... В общем, основной проект закрывается и тут же грузится снова. И так до бесконечности. Поставить задержку больше, по-моему, не выход - на быстрых машинах 3-5 секунд будут раздражать. Что мне, бедному, делать? Может, есть какой то способ проверки открытия окна. То есть чтобы основной проект закрылся только после того, как закроется внедренный. Я смотрел проект на сайте "закрытие окон", но не особо понял, да и там одной кнопкой он открывается, другой закрывается, если делать все в одной - опять, насколько я понимаю, нужна пауза... Или как еще можно сделать?
Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету... Марк Твен
|
|
| |
as-master | Дата: Вторник, 11 Декабря 2007, 11:03 | Сообщение # 16 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Quote (Игорь) Ребят, это... а я когда этот же вопрос поднимал... Ёкарный бабай!!! Действительно! Это ж надо какая память короткая - прошло всего-то полгода. Но самое удивительное, это то, что НИКТО не вспомнил, даже Юра, который обычно тут же перекидывает в подобную тему. И вообще ругается на эту тему... Почитал я тот топик - вобщем, ничего нового или интересного...
Да пребудет с вами ММВ!
|
|
| |
Игорь | Дата: Среда, 12 Декабря 2007, 06:51 | Сообщение # 17 |
Педагог
Группа: Проверенные
Сообщений: 331
Репутация: 0
Награды: 0
Статус: Offline
| Quote (as-master) Почитал я тот топик - вобщем, ничего нового или интересного... Ну, тогда я и сам на это дело забил... уже и не помню, что именно сделал, помню, что как-то по другому решил... Без внедренного файла. А вот что мне делать по поводу Quote (Игорь) Может, есть какой то способ проверки открытия окна. То есть чтобы основной проект закрылся только после того, как закроется внедренный. Я смотрел проект на сайте "закрытие окон", но не особо понял, да и там одной кнопкой он открывается, другой закрывается, если делать все в одной - опять, насколько я понимаю, нужна пауза... Или как еще можно сделать?
Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету... Марк Твен
|
|
| |
as-master | Дата: Среда, 12 Декабря 2007, 08:24 | Сообщение # 18 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Quote (Игорь) То есть чтобы основной проект закрылся только после того, как закроется внедренный Так он и так закрывается! Именно в этом-то моя проблема и состоит! А мне надо, чтоб не закрывался. Или ты другое имеешь в виду? Я могу понять только так: открыли основной проект, из него запустили внедренный В ДРУГОМ ОКНЕ, потом основной проект закрывают, и нужно, чтоб вместе с ним закрылся и запущенный в другом окне. Если так, то я знаю ответ. А другого я и представить-то не могу...
Да пребудет с вами ММВ!
|
|
| |
Игорь | Дата: Среда, 12 Декабря 2007, 11:27 | Сообщение # 19 |
Педагог
Группа: Проверенные
Сообщений: 331
Репутация: 0
Награды: 0
Статус: Offline
| Есть два проекта: основной и внедренный. На основном кнопка "Закрыть" При ее нажатии открывается во внешнем окне внедренный проект, делает свое дело, закрывается, и после этого должен закрыться основной. У меня работает, но корректно только на быстрых машинах - внешнее окно успевает сменить разрешение и закрыться ДО того, как начнет выполняться команда закрытия основного окна. А на медленных - не успевает. Вот где загвоздка. То есть что-то вроде этого Quote (as-master) основной проект закрывают, и нужно, чтоб вместе с ним закрылся и запущенный в другом окне только наоборот закрылся внедренный внешний и после этого - основной.
Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету... Марк Твен
|
|
| |
as-master | Дата: Среда, 12 Декабря 2007, 12:47 | Сообщение # 20 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| ниасилил - слишкам многа букаф... (© албанск.) А если серьезно, то ни фига не понимаю, зачем вся эта лабуда... И почему второй проект должен открываться именно при нажатии кнопки "Закрыть"???... И почему второй проект "делает свое дело (чёрное!!!) и закрывается". Сам чтоль? И где прописана команда закрытия? И как она прописана? Одни вопросы. Сорри... Добавлено (12 Декабрь 2007, 12:47) --------------------------------------------- Чтобы тебе могли ответить, надо задавать вопрос только один, и изложить его четко и ясно. А у тебя тут целый букет...
Да пребудет с вами ММВ!
|
|
| |
Игорь | Дата: Четверг, 13 Декабря 2007, 07:37 | Сообщение # 21 |
Педагог
Группа: Проверенные
Сообщений: 331
Репутация: 0
Награды: 0
Статус: Offline
| Quote (as-master) И почему второй проект должен открываться именно при нажатии кнопки "Закрыть"???... Второй проект - смена разрешения экрана. Если разрешение 800х600, то при закрытии он запускается, чтобы сменить его на прежнее. У меня не получается с плагином сделать, чтобы со всех страниц он работал, поэтому я его в другом проекте склепал. Quote (as-master) И почему второй проект "делает свое дело (чёрное!!!) и закрывается". Сам чтоль? Черное - это я образно Да, и сам закрывается. Сменил разрешение и все, он нам больше не нужен. Он хоть и небольшой, а лишнюю память занимать не хочется. Quote (as-master) И где прописана команда закрытия? И как она прописана? В кнопке закрыть - запуск проекта, потом через паузу - закрытие основного. Так, нет, я лучше простейший проектик склепаю сейчас, а то чувствую, слов не нахожу, опять наговорю кучу. Сегодня выложу... может быть... Если успею.
Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету... Марк Твен
|
|
| |
as-master | Дата: Четверг, 13 Декабря 2007, 09:02 | Сообщение # 22 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| А, вот так значит. Теперь всё понял. Не надо ничего клепать По идее тогда всё должно работать... Тогда я бы сделал, во-первых, размер окна второго проекта 1х1 пиксел, чтобы его не видно было. Во-вторых, скомпилировал бы его как "Компонент рабочего стола", тогда на панели запущенных приложений винды также не будет видно, что запущена какая-либо программа. Тогда этот второй проект может спокойно работать, и никто его не увидит. Ну, поехали дальше. А в чем проблема-то? Что не закрывается первый проект? Так сделай паузу побольше. А еще лучше, в кнопке закрытия напиши RunScript("CBK_EXIT"), а все задачи по запуску второго окна и закрытию первого назначь скрипту CBK_EXIT. И всё должно получиться. Я уже как-то сталкивался с этой проблемой, что не закрывается проект, если непосредственно перед его закрытием дается команда на запуск какого-нибудь приложения. Так вот, я решал такую проблему именно так, через сценарий CBK_EXIT.
Да пребудет с вами ММВ!
|
|
| |
Игорь | Дата: Четверг, 20 Декабря 2007, 06:49 | Сообщение # 23 |
Педагог
Группа: Проверенные
Сообщений: 331
Репутация: 0
Награды: 0
Статус: Offline
| Quote (as-master) А, вот так значит. Теперь всё понял. Не надо ничего клепать Поздно... Уже склепал Вот там только там в скриптах плагина много "зелени" - я не удалял, чтобы потом в случае чего знать, что откуда и куда. Может, чего лишнего добавил. Убрал там проверку - ведь всего два разрешения - 800х600 и то, которое было - чего там проверять? Ну, может, кому пригодится. Смена разрешения может производиться с любой страницы, поскольку кнопки на мастер-странице. Quote (as-master) Тогда я бы сделал, во-первых, размер окна второго проекта 1х1 пиксел, чтобы его не видно было. Хе, а я так и сделал... Quote (as-master) Во-вторых, скомпилировал бы его как "Компонент рабочего стола", тогда на панели запущенных приложений винды также не будет видно, что запущена какая-либо программа. М-м-м... идея, конечно... только когда меняется разрешение, экран все равно мигает, и все равно не видно, какая прога запущена... Но лишнего, думаю, не будет. Quote (as-master) Так сделай паузу побольше. Боюсь, на быстрых машинах пользователь начнет нервничать, почему программа долго не закрывается, а пока привыкнет, нервишки могут сдать Я думал про это. Иногда и 2 секунды мало, смотря какая машина, а сделай 5 - так это... А может, сделать окно "Подождите, программа закрывается" ? А ведь мысль... И себя, любимого, можно будет туды запхать. Quote (as-master) А еще лучше, в кнопке закрытия напиши RunScript("CBK_EXIT"), а все задачи по запуску второго окна и закрытию первого назначь скрипту CBK_EXIT. И всё должно получиться. Так а, в принципе, какая разница, все равно ведь сперва должен отработать внедренный проект, а потом, когда с его помощью сменилось разрешение, закрылся основной. Хотя попробую. Спасибо. Но проект все-таки глянь...те. Все, кому интересно Добавлено (20 Декабрь 2007, 06:49) --------------------------------------------- Хе, видимо, никому не интересно
Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету... Марк Твен
|
|
| |
as-master | Дата: Четверг, 20 Декабря 2007, 10:04 | Сообщение # 24 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Quote (Игорь) Вот там только там в скриптах плагина много "зелени" Кстати, я практически никогда не удаляю собственные комментарии, хотя они, как показала проверка, увеличивают размер конечного скомпилированного файла (я предполагал, что при компиляции все комменты удаляются, но это не так). Комментарии очень нужны, потому-что через полгода ты уже не вспомнишь, что и для чего там написал. Если, конечно, ты постоянно делаешь новые проекты. Как-то раз я открыл свою старую работу и вижу никому не нужную строку. Думаю: нафига здесь она? Ну точно не нужна! Везде посмотрел - ну мля буду, не нужна. И удалил. И проект перестал работать. С тех пор я комментарии пишу и оставляю жить в проекте навсегда. Quote (Игорь) Хе, видимо, никому не интересно Ну почему не интересно? Я посмотрел, всё работает хорошо. Даже сохранил себе на диск в папку разных примеров, для коллекции. Напомни - сорри, я уже забыл - что за плагин использован в проекте - 2.dll?
Да пребудет с вами ММВ!
|
|
| |
Игорь | Дата: Четверг, 20 Декабря 2007, 10:59 | Сообщение # 25 |
Педагог
Группа: Проверенные
Сообщений: 331
Репутация: 0
Награды: 0
Статус: Offline
| Quote (as-master) Я посмотрел, всё работает хорошо. Вот и у меня хорошо работает... и на других быстрых машинах тоже. Впрочем, я паузу поставил - лучше будет Quote (as-master) Напомни - сорри, я уже забыл - что за плагин использован в проекте - 2.dll? Это плагин toizy-а, для смены разрешения экрана, я его просто переименовал, когда пробовал два одинаковых вкорячить, да так один и оставил.
Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету... Марк Твен
|
|
| |