Связь между двумя exe-файлами
|
|
mitt32 | Дата: Четверг, 05 Июля 2007, 17:42 | Сообщение # 1 |
Новый участник
Группа: Пользователи
Сообщений: 23
Репутация: 0
Награды: 0
Статус: Offline
| Можно ли сделать связь между двумя exeшниками ммб, т.е. при нажатие кнопки на одном exe, какая-либо команда выполнялась после этого на другом?
|
|
| |
YURIY | Дата: Четверг, 05 Июля 2007, 18:36 | Сообщение # 2 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| http://mmbuilder.ru/load/5-1-0-233
Вечная память Андрею Сергееву!
|
|
| |
as-master | Дата: Четверг, 05 Июля 2007, 18:53 | Сообщение # 3 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| А вот примерчик от меня, который поинтереснее будет. В том примере передаются только координаты, а в моем - любая информация о действиях пользователя в первом окне: нажатие кнопки, выбор объекта, ввод информации в эдитбокс, перемещение слайдера и т.п. (иллюстрация): Инструкция простая. Скачайте архив, скомпилируйте оба проекта с именами Передатчик и Приемник (собственно, имена не имеют значения) и запустите оба экзешника. Enjoy :)
Да пребудет с вами ММВ!
|
|
| |
mitt32 | Дата: Четверг, 05 Июля 2007, 19:09 | Сообщение # 4 |
Новый участник
Группа: Пользователи
Сообщений: 23
Репутация: 0
Награды: 0
Статус: Offline
| А кроме буфера нет других видов передачи? Ведь все комманды передаются через буфер обычным текстом и если к примеру юзер в это время скопировал что-то, то вся передача впустую, а если зацикливать передачу то цп получается слишком высоким для такой задачи...
|
|
| |
as-master | Дата: Четверг, 05 Июля 2007, 19:16 | Сообщение # 5 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| В любом случае процессор будет загружен, так как каким бы способом ты не передавал значения, скрипт у тебя должен работать постоянно и с достаточно высокой скоростью, чтобы второе окно успевало вовремя отлавливать твои команды. Передавать параметры можно еще через реестр и через запись/чтение файла. Конечно, использование буфера не есть лучшее решение, с другой стороны запись и чтение в файл (а реестр - это тоже файлы) с частотой 50 раз в секунду тоже не есть хорошо. Насчет того, что юзер скопировал в буфер что-то и потерял данные, я сейчас скажу, как с этим бороться, вот только покурить схожу :)
Да пребудет с вами ММВ!
|
|
| |
toizy | Дата: Четверг, 05 Июля 2007, 19:23 | Сообщение # 6 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| Quote (as-master) Насчет того, что юзер скопировал в буфер что-то и потерял данные Я уже догадываюсь, что ты скажешь Но тело спрашивает не про это, а совсем про другое - если юзверь скопирует в буфер, то и все наши данные протухнут Добавлено (05 Июля 2007, 19:23) --------------------------------------------- Вообще, сейчас мне (как впрочем и всегда) видится решение с использованием плагина
Жизнь оказалась не такой уж и забавной, как поначалу...
Сообщение отредактировал toizy - Четверг, 05 Июля 2007, 19:24 |
|
| |
as-master | Дата: Четверг, 05 Июля 2007, 19:24 | Сообщение # 7 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Quote (toizy) если юзверь скопирует в буфер, то и все наши данные протухнут Нет, ничего страшного не произойдет. В то время, когда он скопирует данные, он не будет манипулировать с окном проекта. А когда начнет манипулировать, то его данные мы сохраним, а через буфер передадим свои. Щас...
Да пребудет с вами ММВ!
|
|
| |
toizy | Дата: Четверг, 05 Июля 2007, 19:26 | Сообщение # 8 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| Quote (as-master) В то время, когда он скопирует данные, он не будет манипулировать с окном проекта. А когда начнет манипулировать, то его данные мы сохраним, а через буфер передадим свои Да, но если мы уже послали СВОИ данные в буфер, а наш принимающий проект не успел ещё обработать эти данные, тогда-то и произойдёт лажа
Жизнь оказалась не такой уж и забавной, как поначалу...
|
|
| |
as-master | Дата: Четверг, 05 Июля 2007, 19:29 | Сообщение # 9 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Quote (toizy) наш принимающий проект не успел ещё обработать эти данные Ну-ну! Неужели юзер сможет опередить скрипт, работающий с таймером 50 мс?
Да пребудет с вами ММВ!
|
|
| |
toizy | Дата: Четверг, 05 Июля 2007, 19:34 | Сообщение # 10 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| Quote (as-master) Неужели юзер сможет опередить скрипт, работающий с таймером 50 мс? Нажатие клавиш всё равно когда-нибудь произойдёт, и не факт, что не именно в тот момент, когда данные уже посланы, но ещё не обработаныДобавлено (05 Июля 2007, 19:34) --------------------------------------------- У винды точные часы, и 50 миллисекунд для неё пустяки
Жизнь оказалась не такой уж и забавной, как поначалу...
|
|
| |
as-master | Дата: Четверг, 05 Июля 2007, 19:37 | Сообщение # 11 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Короче, ну его н*х, этот буфер. Используйте файл. Это лучше, чем реестр, поскольку работа с реестром есть по сути та же самая запись в файл, только при этом еще и реестр замусоривается.
Да пребудет с вами ММВ!
|
|
| |
toizy | Дата: Четверг, 05 Июля 2007, 19:43 | Сообщение # 12 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| Quote (as-master) Это лучше, чем реестр, поскольку работа с реестром есть по сути та же самая запись в файл, только при этом еще и реестр замусоривается. Во! В точку! Добавлено (05 Июля 2007, 19:43) --------------------------------------------- Да, забыл. Если всё-таки припрёт использовать буфер, используй мой плагин для контроля буфера обмена. Он может усечь любое изменение буфера и сохранить егов файл, а потом загрузить. Весчь ещё та, короче, и размер по минимуму - Делфи фарева! На*** всякие там Си даже со всеми их плюсами
Жизнь оказалась не такой уж и забавной, как поначалу...
|
|
| |
mitt32 | Дата: Четверг, 05 Июля 2007, 19:55 | Сообщение # 13 |
Новый участник
Группа: Пользователи
Сообщений: 23
Репутация: 0
Награды: 0
Статус: Offline
| Quote (toizy) Да, забыл. Если всё-таки припрёт использовать буфер, используй мой плагин для контроля буфера. Он может усечь любое изменение буфера и сохранить буфер в файл, а потом загрузить. Весчь ещё та, короче, и размер по минимуму - Делфи фарева! На*** всякие там Си даже со всеми их плюсами Припрёт! Попробую! Еще один вопрос, а если посылаться будут чисто комманды, напимер: Run("<SrcDir>\1.exe","") AudioPlay() RunScript("Script") и т.д. и т.п. Причем значения комманд будут всегда разными, как заставить "приемник" считать это коммандой, а не простым текстом и сарзу выполнять их?
|
|
| |
toizy | Дата: Четверг, 05 Июля 2007, 19:57 | Сообщение # 14 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| Quote (mitt32) а если посылаться будут чисто комманды, напимер Кстати, это идея. Я как-то пробовал, но не помню получилось или нет Ну попробуй, и узнаешь
Жизнь оказалась не такой уж и забавной, как поначалу...
|
|
| |
as-master | Дата: Четверг, 05 Июля 2007, 20:21 | Сообщение # 15 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Quote (toizy) если посылаться будут чисто комманды... Причем значения комманд будут всегда разными Такое можно будет легко реализовать в следующей версии ММВ, т.к. в ней будет возможным создание динамических объектов во время выполнения, в том числе и скриптов. А в текущей версии реализовать непросто будет. Подумать нужно...
Да пребудет с вами ММВ!
|
|
| |
Peter | Дата: Четверг, 05 Июля 2007, 20:49 | Сообщение # 16 |
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 1265
Репутация: 75
Награды: 18
Статус: Offline
| А почему бы вот эту штуку не применить? Quote Added a complete Command line support for MMB compiled apps. With this you can send an unlimited number of parameters to your applications (even already running apps with a single instance enabled!). With this new feature you can create windows screen savers including settings dialog! Это "цитата" из справочного файла ещё версии 4.9.6а...
Никто не может вернуться в прошлое и изменить свой старт. Но каждый может стартовать сейчас и изменить свой финиш!
|
|
| |
mitt32 | Дата: Четверг, 05 Июля 2007, 21:12 | Сообщение # 17 |
Новый участник
Группа: Пользователи
Сообщений: 23
Репутация: 0
Награды: 0
Статус: Offline
| Quote (Peter) А почему бы вот эту штуку не применить? Что-то я не совсем понял как этой штукой пользоваться. Можно ввиде примера скрип какой-нить?
|
|
| |
Peter | Дата: Четверг, 05 Июля 2007, 21:28 | Сообщение # 18 |
Админ NeoBook
Группа: Админ NeoBook
Сообщений: 1265
Репутация: 75
Награды: 18
Статус: Offline
| Quote (mitt32) Можно ввиде примера скрип какой-нить? ММВ не моя стихия... Это лучше к знатокам ММВ...Добавлено (05 Июля 2007, 21:28) --------------------------------------------- Кстати, по идее это должно сработать и в вопросе "Старт и закрытие двух программ."
Никто не может вернуться в прошлое и изменить свой старт. Но каждый может стартовать сейчас и изменить свой финиш!
|
|
| |
toizy | Дата: Четверг, 05 Июля 2007, 21:31 | Сообщение # 19 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| Quote (as-master) Такое можно будет легко реализовать в следующей версии ММВ, т.к. в ней будет возможным создание динамических объектов во время выполнения, в том числе и скриптов. Речь не про то. Читай пост Петра.
Жизнь оказалась не такой уж и забавной, как поначалу...
|
|
| |
toizy | Дата: Четверг, 05 Июля 2007, 21:41 | Сообщение # 20 |
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
| Вот накидал. Вроде работает. Нужно скомпилить проект 1 как 1.ехе и 2 как 2.ехе. Затем запустить 2.ехе, нажать первый батон, затем второй. При компиляции 1.ехе ставить крыжик "Только один экземпляр"
Жизнь оказалась не такой уж и забавной, как поначалу...
|
|
| |
YURIY | Дата: Четверг, 05 Июля 2007, 22:11 | Сообщение # 21 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| toizy, всё верно. Я тем же путём работал, когда сделал пример открытия MMB-проект и запуска кинутых на его ярлык файлов. Кстати, вопрос сегодня такой звучал и ссылку я приводил.
Вечная память Андрею Сергееву!
|
|
| |
mitt32 | Дата: Четверг, 05 Июля 2007, 22:23 | Сообщение # 22 |
Новый участник
Группа: Пользователи
Сообщений: 23
Репутация: 0
Награды: 0
Статус: Offline
| Погодите, так с помощью этого только простые вещи над вторым exe делать можно. Вот вам обрисую ситуацию: 1) дан плеер (1.exe) сделанный с помощью ммб, 2) дан плейлист (2.exe), который идет отдельным exe, 3) при команде open, все треки которые должны быть загружены в плеер (1.exe) посредством передачи отсылаются плейлисту (2.exe), там они появляются, 4) двойной клик по плейлисту (2.exe), пошел сигнал плееру (1.exe) о том что надо проиграть такой-то файл..... вот как это сделать??? Передача и прием обоих exe-файлов, причем командами с разными значениями, в моем случае с разными песнями
|
|
| |
as-master | Дата: Четверг, 05 Июля 2007, 23:48 | Сообщение # 23 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Так я и знал, что ты хочешь отдельный плейлист заваять Когда-то я озадачивался этим вопросом, а потом плюнул - зачем? Например в винампе у меня плейлист все равно всегда снизу основного окна висит. И в других плеерах я тоже так делаю. А следовательно что? А то, что ни к чему париться из-за этого. Достаточно включать-выключать плейлист с помощью изменения размеров окна.
Да пребудет с вами ММВ!
|
|
| |
Alex3A | Дата: Суббота, 07 Июля 2007, 15:24 | Сообщение # 24 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| >>Можно ли сделать связь между двумя exeшниками ммб >>А кроме буфера нет других видов передачи? >>и с достаточно высокой скоростью, чтобы второе окно успевало вовремя >>отлавливать твои команды. >>Короче, ну его н*х, этот буфер. >>а если посылаться будут чисто комманды, напимер Так хорошо начиналось.... Но вопрос, конечно интересный, и вот почему: По сути ММВ довольно медленная штука, и его подвесить раз плюнуть, буфер обмена - для кухарок, реестр и файл тоже не очень - все требует напряженной работы проекта. Более изящные варианты возможно обеспечить с помощью плагинов - основная задача развязать проект от менеджеров приемо-передачи (ммв скриптов осуществляющих проверку наличия и передачу данных). Проект должен только выдать и принять посылку, и то, нужно отработать, когда принимать посылку. Для плагинов, имеются широкие возможности, от посылок message до передачи по TSP IP мегабайтов информации. По поводу команд, пересылать команды, в чистом виде, вам не удастся. Но вот, изобрести некий протокол вполне возможно, ваш скрипт должен анализировать принятую информацию и соответственно выполнять ваши команды. >>А следовательно что? А то, что ни к чему париться из-за этого. Конечно, из пушек по воробьям не стреляют.... Так что прежде чем изобретать трактор, подумайте, а нужен ли он вам. Я его изобрел года четыре назад, и почти ни где не использую.
|
|
| |
mitt32 | Дата: Четверг, 19 Июля 2007, 16:59 | Сообщение # 25 |
Новый участник
Группа: Пользователи
Сообщений: 23
Репутация: 0
Награды: 0
Статус: Offline
| Ну не знаю как Вам, а вот мне это бы пригодилось ибо много задумок с отделенным плейлистом есть...
|
|
| |
Alex3A | Дата: Воскресенье, 22 Июля 2007, 19:28 | Сообщение # 26 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| А зачем тебе отдельный плейлист? И отдельный от чего? Что играть собираешся и каким плеером, ммвшным или иным каким? Или наподобе винампа хочешь? Если ммвшным это не сложно- оба окна плееры с листами, пересылать содержимое листов не надо, пусть каждый считывает из файла, надо только передать команду, из одного в другой, что бы соответствующий остановился. На форуме много болтали о передаче через буфер обмена, посмотри. Или плагин плеера с внешним плейлистом (окно листа не в ммб проекте ).
|
|
| |