Дискуссионный математический форумМатематический форум
Математический форум Math Help Planet

Обсуждение и решение задач по математике, физике, химии, экономике

Теоретический раздел
Часовой пояс: UTC + 3 часа [ Летнее время ]
новый онлайн-сервис
число, сумма и дата прописью

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 11 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Как создать обмен между экземплярами программы?
СообщениеДобавлено: 15 янв 2022, 23:30 
Не в сети
Light & Truth
Зарегистрирован:
09 мар 2014, 08:58
Сообщений: 2770
Откуда: РФ
Cпасибо сказано: 49
Спасибо получено:
357 раз в 277 сообщениях
Очков репутации: 10

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

Вопрос:
- Каким образом установить передачу информации между этими окнами?
(Нужно, чтобы каждый экземпляр знал, что запущены еще и другие, и сколько именно)

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

Этим же недостатком страдает и вариант записи в Системный Реестр, только это еще и некошерно - засорять Реестр посторонними записями.

Идеально было бы иметь какую-нибудь общую область в ОЗУ, куда можно было бы ставить отметки - а при выключении компа всё это автоматически аннулировалось бы.
Возможно ли что-нибудь подобное организовать через API например?

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Как создать обмен между экземплярами программы?
СообщениеДобавлено: 16 янв 2022, 10:21 
Не в сети
Оракул
Аватара пользователя
Зарегистрирован:
26 янв 2021, 11:35
Сообщений: 764
Откуда: c Литейной
Cпасибо сказано: 40
Спасибо получено:
241 раз в 230 сообщениях
Очков репутации: 19

Добавить очки репутацииУменьшить очки репутации
O Micron писал(а):
Идеально было бы иметь какую-нибудь общую область в ОЗУ,


Чтобы это делать надо использовать системный API интерфейс и для этого компилировать программу для работы в привилигерованном режиме. Этот вариант скорей всего проходит только на C++.

O Micron писал(а):
Возможно ли что-нибудь подобное организовать через API например?


Проще будет посмотреть документацию на вашу среду программирования и выяснить, как создается именованный pipe-канал или семафор.
Через pipe-канал можно передавать информацию между программами. А с помощью семафоров запрещать запуск программ. Посмотрите примеры в документации. Может эти механизмы вам подойдут. Только учтите, что в Windows эти механизмы делятся на локальные, когда передача информации идет между ветвями одной программы, и системные, когда один независимый exe-шник взаимодействует с другими. В вашем случае нужны системные интерфейсные функции.

Еще. Посмотрите интерфейс объекта-окно. Давно уже это было, но между окнами в Windows существовал обмен сообщениями. С помощью этого механизма тоже можно управлять приложениями. Давно я это делал, поэтому не могу гарантировать, что есть системные сообщения, а вот между окнами одной программы точно можно обмениваться сообщениями.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Как создать обмен между экземплярами программы?
СообщениеДобавлено: 16 янв 2022, 11:22 
Не в сети
Light & Truth
Зарегистрирован:
09 мар 2014, 08:58
Сообщений: 2770
Откуда: РФ
Cпасибо сказано: 49
Спасибо получено:
357 раз в 277 сообщениях
Очков репутации: 10

Добавить очки репутацииУменьшить очки репутации
За pipe спасибо, я не слыхал. Поищу.
Про обмен сообщениями между окнами мне оч давно попадалось на форуме каком-то, вряд ли теперь найду.

А не могли бы Вы указать на хороший русский перевод описания АПИ? Там ведь много чего есть, но инглиш утомляет очень.
(У меня есть перевод, но фрагментарный, там только самые употребительные разъяснены.)

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Как создать обмен между экземплярами программы?
СообщениеДобавлено: 16 янв 2022, 11:54 
Не в сети
Оракул
Аватара пользователя
Зарегистрирован:
26 янв 2021, 11:35
Сообщений: 764
Откуда: c Литейной
Cпасибо сказано: 40
Спасибо получено:
241 раз в 230 сообщениях
Очков репутации: 19

Добавить очки репутацииУменьшить очки репутации
O Micron писал(а):
А не могли бы Вы указать на хороший русский перевод описания АПИ? Там ведь много чего есть, но инглиш утомляет очень.


Когда я работал у нас были купленные два диска с MSDN на английском. В принципе я завел себе записную книжку и туда записывал перевод нужных функций и потом им пользовался.
Сейчас посмотрел Интернет. Обнаружил, что уже есть фирменный сайт MSDN на русском.
https://docs.microsoft.com/ru-ru/documentation/
Попробуйте посмотреть. Мне все облегчало то, что все системные вызовы описаны для C++ и мы на нем и писали программы.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Как создать обмен между экземплярами программы?
СообщениеДобавлено: 16 янв 2022, 12:19 
Не в сети
Light & Truth
Зарегистрирован:
09 мар 2014, 08:58
Сообщений: 2770
Откуда: РФ
Cпасибо сказано: 49
Спасибо получено:
357 раз в 277 сообщениях
Очков репутации: 10

Добавить очки репутацииУменьшить очки репутации
Я на VB6 пишу. АПИ подключаются без особых проблем, - но надо точно знать, как, и чего хочет каждая функция.
Я когда COM-порт подключал, чуть не о####ел, пока DCB разобрал - в русских описаниях и примерах - ошибки, блин!.. И ведь никто не разъясняет основные принципы: как, для чего это нужно, а типо - напишите то, кликните туда. Тупость, блин. Простите за непарламентский язык.

За сайт спасибо. Да, иногда находил у Микрософта кое-что дельное. А сейчас он больше не отвечает. "Ваш браузер не поддерживается" - и всё, приплыли.
Хотят, чтобы я новый поставил, который на ХРюшу не ставится, надо Десятку. Мне чё теперь, ради них ноут на помойку выкинуть, потому что Десятка на него не встанет?

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Как создать обмен между экземплярами программы?
СообщениеДобавлено: 16 янв 2022, 12:48 
Не в сети
Оракул
Аватара пользователя
Зарегистрирован:
26 янв 2021, 11:35
Сообщений: 764
Откуда: c Литейной
Cпасибо сказано: 40
Спасибо получено:
241 раз в 230 сообщениях
Очков репутации: 19

Добавить очки репутацииУменьшить очки репутации
O Micron писал(а):
За сайт спасибо. Да, иногда находил у Микрософта кое-что дельное. А сейчас он больше не отвечает. "Ваш браузер не поддерживается" - и всё, приплыли.


У меня тоже XP и десятка. Под XP стоит браузер Yandex версия 17.4.1.
Большинство сайтов видно. Под ХР яндекс по ссылке, которую я вам дал, сайт открывается. Объем Яндекса маленький. Попробуйте установить. Будете видеть больше.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Как создать обмен между экземплярами программы?
СообщениеДобавлено: 16 янв 2022, 14:49 
Не в сети
Light & Truth
Зарегистрирован:
09 мар 2014, 08:58
Сообщений: 2770
Откуда: РФ
Cпасибо сказано: 49
Спасибо получено:
357 раз в 277 сообщениях
Очков репутации: 10

Добавить очки репутацииУменьшить очки репутации
StepUp писал(а):
браузер Yandex
Судя по тому бешеному упорству, с которым Яндекс впихивает нам этот браузер, ставить его ни в коем случае не следует.
Я попробовал Qt, который умеет эмулировать разные другие браузеры. Под эмуляцией Сафари сайт Микрософта не разобрал, что это такое, и не выдал требование поставить свой Edge, но и информацию не показал, только колонтитулы сайта. Чё-то не срослось, он же весь на скриптах сделан каких-то ненормальных.
В общем - пошел он в жо... вместе со своим Биллом.
Найдется и без него инфа по-русски.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Как создать обмен между экземплярами программы?
СообщениеДобавлено: 16 янв 2022, 18:22 
Не в сети
Оракул
Аватара пользователя
Зарегистрирован:
26 янв 2021, 11:35
Сообщений: 764
Откуда: c Литейной
Cпасибо сказано: 40
Спасибо получено:
241 раз в 230 сообщениях
Очков репутации: 19

Добавить очки репутацииУменьшить очки репутации
O Micron писал(а):
В общем - пошел он в жо... вместе со своим Биллом.
Найдется и без него инфа по-русски.


На счет Билла полностью с вами солидарен. :) Тем более, что инфу на русском найти можно. Поищите в Инете по ключевой аббревиатуре "MSDN". У меня в браузере сразу вышел на ссылку, что вам сообщил, но ссылок, конечно, много.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Как создать обмен между экземплярами программы?
СообщениеДобавлено: 24 фев 2022, 19:22 
Не в сети
Оракул
Аватара пользователя
Зарегистрирован:
28 ноя 2021, 06:37
Сообщений: 790
Cпасибо сказано: 3
Спасибо получено:
18 раз в 18 сообщениях
Очков репутации: -17

Добавить очки репутацииУменьшить очки репутации
O Micron
COM, Named Pipes, Shared Memory

Какой язык? (лучше с версией компилятора)

Цитата:
Идеально было бы иметь какую-нибудь общую область в ОЗУ

эта технология называется Shared Memory

Цитата:
Неудобство этого пути в том, что временный файл надо обнулять и вовремя удалять с диска. А если случился глюк (что для Винды не редкость) или просто пользователь снял задачу через диспетчер процессов, то отметки в файле остались, хотя программа больше не в работе, - и удалить эти ложные отметки уже некому.

SQL Доверенная конкурентность, оставляете версию последней транзакции.

Вообще возникает куча вопросов...
почему бы Вам не запустить несколько нитей исполнения в рамках одного процесса(программы)?
почему бы Вам не создать программу-диспетчер, которая синхронизирует остальные программы?
итд...

Дайте представление о вашей программе или код... в конце-концов.

https://ru.wikipedia.org/wiki/%D0%97%D0 ... 0%B0%D1%85

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Как создать обмен между экземплярами программы?
СообщениеДобавлено: 24 фев 2022, 19:45 
Не в сети
Оракул
Аватара пользователя
Зарегистрирован:
28 ноя 2021, 06:37
Сообщений: 790
Cпасибо сказано: 3
Спасибо получено:
18 раз в 18 сообщениях
Очков репутации: -17

Добавить очки репутацииУменьшить очки репутации
Вернуться к началу
 Профиль  
Cпасибо сказано 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему    На страницу 1, 2  След.  Страница 1 из 2 [ Сообщений: 11 ]

 Похожие темы   Автор   Ответы   Просмотры   Последнее сообщение 
Информационный обмен в популяциях

в форуме Химия и Биология

limarodessa

0

501

27 июл 2019, 00:27

Создать 960 вариантов ДЛК

в форуме Информатика и Компьютерные науки

Nataly-Mak

1

365

09 июн 2021, 06:26

А не создать ли нам киборга?

в форуме Дискуссионные математические проблемы

oleg18

13

965

21 авг 2014, 12:29

Создать массив

в форуме Информатика и Компьютерные науки

Katrina7

5

421

11 ноя 2017, 01:35

Как создать шаблон в Mathcad 15 (RUS)

в форуме MathCad

Izum

1

785

24 июн 2015, 09:52

Создать математическую модель

в форуме MathCad

kostyaj

0

483

07 ноя 2016, 14:39

Код программы

в форуме Дискуссионные математические проблемы

Martynov_M

0

207

03 май 2023, 19:56

Задача: создать 3x3 бинго-борд

в форуме Начала анализа и Другие разделы школьной математики

Artliza

3

325

22 окт 2017, 04:12

Предложение создать теорию для математиков

в форуме Размышления по поводу и без

romanov59

1

158

13 окт 2022, 12:49

создать формулу для подсчета рейтинга

в форуме Дискуссионные математические проблемы

alexirax

7

124

11 дек 2023, 21:26


Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Яндекс.Метрика

Copyright © 2010-2023 MathHelpPlanet.com. All rights reserved