Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > 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 |
Модератор: Сообщение скрыто. |