Форум
Написать нам
  • Страница 1 из 1
  • 1
Модератор форума: as-master  
О команде 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>?

Прикрепления: 5948460.png (4.7 Kb)


Да пребудет с вами ММВ!
 
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 мегабайт это сегодня уже не актуально

Кому как. Тут ты не прав конкретно. Я лично знаю людей, которые говорят:
ой, мне много качать, ой, я не могу это взять.

Если для нас с тобой это не актуально, это не значит, что для всех.
Еще полно людей, считающих трафик, время и свои жалкие рубли.
Кстати, по большому счету я сам из них smile

Quote (humanoid)
Можешь вообще ни чего не компилировать....
а сделать как раньше в старых версиях.... положить плеер впроект...

А вот эта мысль очень даже интересная!!! Я подумаю...

Quote (Alex3A)
а если это вас смущает, их расширения можно переименовать

Ну, про это-то мы знаем smile Гыыы smile

Всем спасибо!


Да пребудет с вами ММВ!
 
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)
Присядь ... успокойся и подумай...

А мне торопиться особо некуда... Еще будет время подумать...
Это так, кое-что планирую для ПОСЛЕДУЮЩИХ версий своей
Кулинарной книжки. Раз пошла такая пьянка smile


Да пребудет с вами ММВ!
 
ИгорьДата: Вторник, 11 Декабря 2007, 06:47 | Сообщение # 15
Педагог
Группа: Проверенные
Сообщений: 331
Репутация: 0
Награды: 0
Статус: Offline
Ребят, это... а я когда этот же вопрос поднимал...
http://mmbuilder.ru/forum/12-255-1
biggrin
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)
основной проект закрывают, и нужно, чтоб вместе с ним закрылся и запущенный в другом окне
только наоборот smile закрылся внедренный внешний и после этого - основной.


Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету...
Марк Твен
 
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)
И почему второй проект "делает свое дело (чёрное!!!) и закрывается". Сам чтоль?

Черное - это я образно biggrin Да, и сам закрывается. Сменил разрешение и все, он нам больше не нужен. Он хоть и небольшой, а лишнюю память занимать не хочется.
Quote (as-master)
И где прописана команда закрытия? И как она прописана?

В кнопке закрыть - запуск проекта, потом через паузу - закрытие основного. Так, нет, я лучше простейший проектик склепаю сейчас, а то чувствую, слов не нахожу, опять наговорю кучу. Сегодня выложу... может быть... Если успею.


Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету...
Марк Твен
 
as-masterДата: Четверг, 13 Декабря 2007, 09:02 | Сообщение # 22
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
А, вот так значит. Теперь всё понял. Не надо ничего клепать smile

По идее тогда всё должно работать...

Тогда я бы сделал, во-первых, размер окна второго проекта 1х1 пиксел,
чтобы его не видно было.

Во-вторых, скомпилировал бы его как "Компонент рабочего стола", тогда
на панели запущенных приложений винды также не будет видно, что
запущена какая-либо программа.

Тогда этот второй проект может спокойно работать, и никто его не увидит.

Ну, поехали дальше. А в чем проблема-то? Что не закрывается первый
проект? Так сделай паузу побольше. А еще лучше, в кнопке закрытия
напиши RunScript("CBK_EXIT"), а все задачи по запуску второго окна и
закрытию первого назначь скрипту CBK_EXIT. И всё должно получиться.

Я уже как-то сталкивался с этой проблемой, что не закрывается проект,
если непосредственно перед его закрытием дается команда на запуск
какого-нибудь приложения. Так вот, я решал такую проблему именно так,
через сценарий CBK_EXIT.


Да пребудет с вами ММВ!
 
ИгорьДата: Четверг, 20 Декабря 2007, 06:49 | Сообщение # 23
Педагог
Группа: Проверенные
Сообщений: 331
Репутация: 0
Награды: 0
Статус: Offline
Quote (as-master)
А, вот так значит. Теперь всё понял. Не надо ничего клепать

Поздно... Уже склепал biggrin Вот там только там в скриптах плагина много "зелени" - я не удалял, чтобы потом в случае чего знать, что откуда и куда. Может, чего лишнего добавил. Убрал там проверку - ведь всего два разрешения - 800х600 и то, которое было - чего там проверять?

Ну, может, кому пригодится. Смена разрешения может производиться с любой страницы, поскольку кнопки на мастер-странице.

Quote (as-master)
Тогда я бы сделал, во-первых, размер окна второго проекта 1х1 пиксел,
чтобы его не видно было.

Хе, а я так и сделал...
Quote (as-master)
Во-вторых, скомпилировал бы его как "Компонент рабочего стола", тогда
на панели запущенных приложений винды также не будет видно, что
запущена какая-либо программа.

М-м-м... идея, конечно... только когда меняется разрешение, экран все равно мигает, и все равно не видно, какая прога запущена... Но лишнего, думаю, не будет.
Quote (as-master)
Так сделай паузу побольше.

Боюсь, на быстрых машинах пользователь начнет нервничать, почему программа долго не закрывается, а пока привыкнет, нервишки могут сдать biggrin Я думал про это. Иногда и 2 секунды мало, смотря какая машина, а сделай 5 - так это... А может, сделать окно "Подождите, программа закрывается" ? А ведь мысль... И себя, любимого, можно будет туды запхать. biggrin

Quote (as-master)
А еще лучше, в кнопке закрытия
напиши RunScript("CBK_EXIT"), а все задачи по запуску второго окна и
закрытию первого назначь скрипту CBK_EXIT. И всё должно получиться.

Так а, в принципе, какая разница, все равно ведь сперва должен отработать внедренный проект, а потом, когда с его помощью сменилось разрешение, закрылся основной. Хотя попробую.

Спасибо. Но проект все-таки глянь...те. Все, кому интересно biggrin

Добавлено (20 Декабрь 2007, 06:49)
---------------------------------------------
Хе, видимо, никому не интересно

Прикрепления: 9790718.mbd (36.6 Kb)


Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету...
Марк Твен
 
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-а, для смены разрешения экрана, я его просто переименовал, когда пробовал два одинаковых вкорячить, да так один и оставил.


Шум ничего не доказывает. Курица, снесши яйцо, часто клохчет так, словно снесла небольшую планету...
Марк Твен
 
  • Страница 1 из 1
  • 1
Поиск: