On-line: gfilatov2002, гостей 1. Всего: 2 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 2200
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.05.12 10:52. Заголовок: Как передать данные из одной программы в другую ?


Всем привет...

Есть ли механизм передачи данных между программами ?
Допустим прога на МиниГуи запустила терминалку.
Как узнать что терминалка нормально запустилась ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 59 , стр: 1 2 3 All [только новые]


постоянный участник


Пост N: 764
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 05.05.12 13:22. Заголовок: Механизм mutex-ов..


Механизм mutex-ов

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2201
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.05.12 13:36. Заголовок: А пример можно для Х..


А пример можно для Харбора как это будет работать ?
А то по описанию трудно понять как это делать...
Когда с этим работаешь, то понятно... а когда не знаешь как использовать, то труба !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2208
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.05.12 19:32. Заголовок: Нашел на Дельфи: Де..


Нашел на Дельфи:

Дело в том, что можно в памяти создавать временные файлы. При перезагрузке они теряются, а так существуют. Кстати,
этот метод можно использовать и для обмена информацией между вашими приложениями. Пример с использованием FileMapping:

Скрытый текст


А как бы сделать похожее на МиниГуи ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 21
Зарегистрирован: 24.02.11
ссылка на сообщение  Отправлено: 17.05.12 10:12. Заголовок: А если просто создав..


А если просто создавать временный файл на диске?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2209
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.05.12 18:03. Заголовок: vvv пишет: А если п..


vvv пишет:

 цитата:
А если просто создавать временный файл на диске?



Ну это будет слишком просто и непонятно....
Прога на МиниГуи (вывесила заставку ЗАПУСКАЮ....), далее запустила терминалку на хХарборе, терминалка на хХарборе создала временный файл "все'Ok".
Далее прога на МиниГуи у себя отметила что прога на хХарборе запустилась нормально, убрала заставку ЗАПУСКА (как сделать пока не представляю)...

Потом нужно рассматривать варианты, если программа не запустилась по каким то причинам... кто будет убирать заставку и когда ? И т.д.


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 63
Зарегистрирован: 16.12.08
ссылка на сообщение  Отправлено: 17.05.12 18:21. Заголовок: Есть интересный при..


Есть интересный пример : http://msdn.microsoft.com/en-us/library/windows/desktop/aa366551(v=vs.85).aspx

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2210
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.05.12 20:15. Заголовок: santy пишет: Есть и..


santy пишет:

 цитата:
Есть интересный пример



Спасибо. Только в С я не силен. Как бы на Харборе сделать ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 30
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.05.12 21:40. Заголовок: Для Andrey


Andrey пишет:
 цитата:

Прога на МиниГуи (вывесила заставку ЗАПУСКАЮ....), далее запустила терминалку на хХарборе, терминалка на хХарборе создала временный файл "все'Ok".
Далее прога на МиниГуи у себя отметила что прога на хХарборе запустилась нормально, убрала заставку ЗАПУСКА (как сделать пока не представляю)...
Потом нужно рассматривать варианты, если программа не запустилась по каким то причинам... кто будет убирать заставку и когда ? И т.д.


Вот примерный ответ (не C и hb) на AutoIt3:
Скрытый текст



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 22
Зарегистрирован: 24.02.11
ссылка на сообщение  Отправлено: 18.05.12 10:06. Заголовок: Андрей, а какой кома..


Андрей, а какой командой запускаешь терминалку?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2211
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.05.12 12:12. Заголовок: vvv пишет: Андрей, ..


vvv пишет:

 цитата:
Андрей, а какой командой запускаешь терминалку?


ShellExecute(, 'open',cPathExe+cRunExe, cParam, "" , SW_SHOWNORMAL)


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5165
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.11.16 18:07. Заголовок: Возвращаюсь опять к ..


Возвращаюсь опять к этому вопросу.
Уже много времени прошло.

В прошлом году для обмена между МиниГуи и терминалкой сделал (с помощью форумчан) пример:
MiniGUI\SAMPLES\BASIC\COMM_2
Вроде отлично работал, пока пути без русских букв.

Реализовал передачу данных всё таки через базу по таймеру.
Сейчас хочу переделать.

Нужно передавать данные между двумя программами (своими) на одном компе.
Можно ли использовать стандартный SendMessage() ?
Основная программа (сервер) на МиниГуи, клиент терминалка.
В клиенте правятся записи базы, после редактирования SendMessage() и эти номера записей принимает сервер.
Какова вероятность потери при передачи с SendMessage() ?

И ещё при взаимодействии с другими программами (допустим на С#) сколько можно передать данных ?
Т.е. какой максимальный размер данных при передачи через SendMessage() ?


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1285
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.11.16 19:15. Заголовок: Andrey пишет Сейчас ..


Andrey пишет
 цитата:
Сейчас хочу переделать.


С терминалкой, не очень будет, с wvt можно через WM_COPYDATA
Проще сделать через переменную(е) Enviroment (вроде до 4К), т.е.
hb_SetEnv(..., ...)
hb_GetEnv(...)

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5166
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.11.16 19:47. Заголовок: SergKis пишет: С те..


SergKis пишет:

 цитата:
С терминалкой, не очень будет, с wvt можно через WM_COPYDATA


У меня терминалка с wvt.
Тест с C# идёт, c терминалкой нет.

P.S. Нашел вот тут нужную тему:
Передача сообщений между приложениями/процессами при помощи сообщения WM_COPYDATA
http://www.frolov-lib.ru/books/bsp/v27/ch2_2.htm
Минигуи сделал, работает. А терминалку нет.
Как в терминалке прикрутить передачу - функцию SendCopyDataMsg() ?
Саму функцию взял из МиниГуи -
Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1286
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.11.16 21:02. Заголовок: Andrey пишет Как в т..


Andrey пишет
 цитата:
Как в терминалке прикрутить передачу


1. Надо залезть в исходники, добавить обработку WM_COPYDATA, прочитать получ. данные, сохранив в буф. и
послать какой то KeyBoadrd
2. Иметь процедуру, которая сможет получить данные из буф. ( HB_FUNC )
3. Сделать SET KEY на KeyBoard процедуры из 2., которая примет полученные данные
как то так


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1321
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 10.11.16 23:13. Заголовок: Andrey пишет: Как в..


Andrey пишет:

 цитата:
Как в терминалке прикрутить передачу - функцию SendCopyDataMsg() ?



SergKis пишет:

 цитата:
1. Надо залезть в исходники



Или я не вижу всех сообщений, или вы издеваетесь друг над другом..


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1287
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.11.16 01:35. Заголовок: Петр И в чем протев..


Петр
И в чем протеворечие ?
Andrey про МиниГуишный вариант, я про wvt-ый (принять по WM_COPYDATA).
Возможно у Вас есть решение, но это уже др. история\предложение.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1322
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 11.11.16 16:58. Заголовок: SergKis пишет: И в ..


SergKis пишет:

 цитата:
И в чем протеворечие ?


Нет противоречий, но..
Andrey пишет:

 цитата:
Как в терминалке прикрутить передачу - функцию SendCopyDataMsg()


похоже на тонкий троллинг публики.

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

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

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

Я уже не говорю, что "времени прошло много" и с терминалки можно было спрыгнуть. Но это лень, мне знакомо это святое чувство


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5167
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.11.16 17:57. Заголовок: Петр пишет: Я уже н..


Петр пишет:

 цитата:
Я уже не говорю, что "времени прошло много" и с терминалки можно было спрыгнуть. Но это лень, мне знакомо это святое чувство


Ага. С удовольствием бы спрыгнул. Третий год АКТИВНО переделываю проект. Бровсом только год занимаюсь.
Без поддержки с форума не смог бы столько сделать. БОЛЬШОЕ ВАМ ВСЕМ СПАСИБО, кто помогал мне !
Конец работы уже виден, но столько ещё делать....

А юзера новую прогу и не жалуют. Перевести на новую программу одна морока. Как привыкли работать, так и всё.
Юзера не любят осваивать новое. Не знаю что с ними делать...

Разобрался я с Передачей сообщений между приложениями.
В качестве обучающего примера выслал Григорию для включения в библиотеку.
Передача строки идёт на ура !
И даже ехе-ник в 700Мб передаю и получаю !!! Всё глотает.
Пробовал через C# передать строку в 50Мб - проходит, т.е. Минигуи такую строку тоже принимает.
Но сборщик МУСОРА в С# хуже чем в Харборе (это не моё мнение).

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

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1288
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.11.16 18:45. Заголовок: Петр пишет похоже на..


Петр пишет
 цитата:
похоже на тонкий троллинг публики


Это не троллинг, что в данный момент Андрею надо, то он и говорит прямо, честно и откровенно.
Правда, потом оказывается, надо еще воз и тележку и не маленькую ..., потому я сразу про wvt прием и говорил.

 цитата:
Процесс организации прийома описан правильно, ну чуть усложнили..


В чем ? Сейчас это уже не использую (в hb 2.0 было), но интересно, если проще можно.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1323
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 11.11.16 21:42. Заголовок: SergKis пишет: В че..


SergKis пишет:

 цитата:
В чем ? Сейчас это уже не использую (в hb 2.0 было), но интересно, если проще можно.


По пунктам

 цитата:
1. Надо залезть в исходники, добавить обработку WM_COPYDATA, прочитать получ. данные, сохранив в буф. и послать какой то KeyBoadrd


Не обязательно. Нужно заменить стандартный обработчик окна. Это можно делать и что назывется "на лету". KeyBoard зачем трогать?

 цитата:
2. Иметь процедуру, которая сможет получить данные из буф. ( HB_FUNC )


Все зависит от пункта №1. Все действие можно перевести и на PRG уровень.

 цитата:
3. Сделать SET KEY на KeyBoard процедуры из 2., которая примет полученные данные как то так


Опять же вы использовали существующий механизм, а без этого можно обойтись.

На PRG уровне вы создаете публичную переменную (масив строк, хаш) и по событию WM_COPYDATA ваш обработчик добавляет в переменную элементы.
Вам остается контролировать состояние переменной (используя таймер, потоки, возможности hb_idle * - то, что у вас лучше всего получается) и вовремя удалять отработанные данные.
В качестве переменной может быть экземпляр какого-то класса с методами и свойствами.

Я надеюсь, что Андрей организовал хоть какую-то проверку целосности данных.

Если бы речь о 2-х MiniGUI программах, то там вообще "рай": мультипоточность (в разумных пределах, MiniGUI не thread safe), сериализация/десериализация переменных простых типов, выбор методов проверки контрольных сум.

Я надеюсь, что пример Андрея будет именно таким

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 59 , стр: 1 2 3 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 625
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет