| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Организация взаимодействия между двумя программами |
| Автор: zhgutov 3.4.2007, 15:08 |
| Есть программа №1. Можно запустить несколько ее экземпляров. Нужно сделать так, чтобы программа №2 вызывала определенную функцию во всех запущенных копиях программы №1. Как это сделать средствами WinAPI / MFC? |
| Автор: Sartorius 3.4.2007, 15:13 |
| Можешь сделать пару LPC клиент/ LPC сервер. Хоть не документировано, но вроде все еще используется. COM объект можешь зарегистрировать еще... |
| Автор: zhgutov 3.4.2007, 15:16 |
| Sartorius LPC клиент/ LPC сервер — это что? Можешь дать название какой-либо связанной функции, чтобы можно было найти doc в MSDN? Добавлено через 4 минуты и 23 секунды А можно обойтись без COM-объектов? |
| Автор: Sartorius 3.4.2007, 15:24 |
| http://en.wikipedia.org/wiki/Local_Procedure_Call |
| Автор: zhgutov 3.4.2007, 15:31 |
| Sartorius Спасибо! |
| Автор: Earnest 3.4.2007, 18:22 | ||
| А просто сообщение специально созданное послать, не проще? Если возврат не интересует, конечно. Добавлено через 3 минуты и 56 секунд
А в программе №1 просто включить обработку этого сообщения. |
| Автор: zhgutov 5.4.2007, 12:46 |
| Earnest А просто сообщение специально созданное послать, не проще? Нужно, чтобы задержка между посылом и приемом была минимальной и одинаковой для всех программ. Желательно в пределах 10—20 мс. |
| Автор: Partizan 5.4.2007, 15:21 |
| Earnest, хммм...а если ещё N левых прог обработают это сообщение? =) имхо можно просто создать нэймд пайп...прога 2 пишет в этот пайп команду...экземпляры проги 1 из этого пайпа её считывают |
| Автор: Nastya 9.4.2007, 16:56 | ||
Зачем левых, ты можешь послать конкретному окну.. в чем проблема ? Все зависит от втоей конкретики, надо ли тебе передавать параметры в эти функции ? Можно например юзать объекты ядра (типа event) и выставлять их когда что-то должно отработать ... Это как например, давай конкретнее задачу |
| Автор: Partizan 10.4.2007, 10:45 | ||
| Nastya, вопрос был не от создателя темы) Earnest gthdsv параметром написала HWND_BROADCAST вследствие чего он и был задан... у меня почему-то было представление что несколько прог могут одно и то же пользовательское сообщение обработать...(со стандартными виндовыми сообщениями помоему дела обстоят именно так) по поводу вопроса...Earnest на вроде него ответила и я всё понял ;) з.ы. вопрос в догонку тогда можно ли сделать чтобы несколько моих приложений воспринимали сообщение...допустим такое
|
| Автор: Earnest 10.4.2007, 20:33 |
| А что мешает? Другое дело, что теоретически другие программы могут объявить себе сообщение с тем же номером (но подразумевать совершенно другое), и тут может возникнуть конфуз... Эта проблема решается с помощью зарегистрированных текстовых сообщений - маловероятно, чтобы разные приложения придумали одинаковые строки, особенно если их делать подлиннее и предварять своими префиксами (напр. имя программы или, если быть параноиком, гуид сгенерить). Т.е., конечно, рассылать бродкастом нужно либо стандартные сообщения, либо заведомо уникальные (т.е. зарегистрированные). |
| Автор: Doc_d0s 14.4.2007, 15:21 |
| Используй MailBox если к скорости не категорично относишься |
| Автор: Estuark 19.2.2023, 20:13 |
Модератор: Сообщение скрыто. |