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

Прикрепления: 43170912.zip (2.2 Kb)


Да пребудет с вами ММВ!
 
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)
Насчет того, что юзер скопировал в буфер что-то и потерял данные

Я уже догадываюсь, что ты скажешь smile Но тело спрашивает не про это, а совсем про другое - если юзверь скопирует в буфер, то и все наши данные протухнут biggrin

Добавлено (05 Июля 2007, 19:23)
---------------------------------------------
Вообще, сейчас мне (как впрочем и всегда) видится решение с использованием плагина smile


Жизнь оказалась не такой уж и забавной, как поначалу...

Сообщение отредактировал 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)
наш принимающий проект не успел ещё обработать эти данные

Ну-ну! smile
Неужели юзер сможет опередить скрипт, работающий с таймером 50 мс?


Да пребудет с вами ММВ!
 
toizyДата: Четверг, 05 Июля 2007, 19:34 | Сообщение # 10
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Quote (as-master)
Неужели юзер сможет опередить скрипт, работающий с таймером 50 мс?

Нажатие клавиш всё равно когда-нибудь произойдёт, и не факт, что не именно в тот момент, когда данные уже посланы, но ещё не обработаны

Добавлено (05 Июля 2007, 19:34)
---------------------------------------------
У винды точные часы, и 50 миллисекунд для неё пустяки smile


Жизнь оказалась не такой уж и забавной, как поначалу...
 
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)
---------------------------------------------
Да, забыл. Если всё-таки припрёт использовать буфер, используй мой плагин для контроля буфера обмена. Он может усечь любое изменение буфера и сохранить егов файл, а потом загрузить. Весчь ещё та, короче, и размер по минимуму - Делфи фарева! На*** всякие там Си даже со всеми их плюсами smile


Жизнь оказалась не такой уж и забавной, как поначалу...
 
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)
а если посылаться будут чисто комманды, напимер

Кстати, это идея. Я как-то пробовал, но не помню smile получилось или нет
Ну попробуй, и узнаешь


Жизнь оказалась не такой уж и забавной, как поначалу...
 
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)
Можно ввиде примера скрип какой-нить?

ММВ не моя стихия... smile
Это лучше к знатокам ММВ...

Добавлено (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.ехе ставить крыжик "Только один экземпляр"
Прикрепления: 82064636.7z (0.7 Kb)


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

А следовательно что? А то, что ни к чему париться из-за этого.
Достаточно включать-выключать плейлист с помощью изменения
размеров окна.


Да пребудет с вами ММВ!
 
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
А зачем тебе отдельный плейлист? И отдельный от чего?
Что играть собираешся и каким плеером, ммвшным или
иным каким? Или наподобе винампа хочешь?
Если ммвшным это не сложно- оба окна плееры с листами,
пересылать содержимое листов не надо, пусть каждый
считывает из файла, надо только передать команду,
из одного в другой, что бы соответствующий остановился.
На форуме много болтали о передаче через буфер обмена,
посмотри.
Или плагин плеера с внешним плейлистом (окно листа не в ммб проекте ).
 
  • Страница 1 из 1
  • 1
Поиск: