|
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 18
|
|
Windows API и передача сообщений между процессами посредством SEND_MESSAGE27.11.2011, 16:20. Показов 9313. Ответов 13
Метки нет (Все метки)
Здравствуйте, уважаемые форумчане!
Прошу помочь с передачей сообщений между процессами с помощью функции SEND_MESSAGE.В примерах в Интернете сообщения передаются между окнами приложений, я так понимаю, а надо именно между процессами(двумя). Заранее всем спасибо.
0
|
|
| 27.11.2011, 16:20 | |
|
Ответы с готовыми решениями:
13
Передача сообщений между процессами и потоками Обмен данными между процессами с использованием сообщений |
|
162 / 158 / 19
Регистрация: 22.11.2011
Сообщений: 371
|
|
| 27.11.2011, 16:26 | |
|
Окно своего или чужого процесса - разницы практически нет, а если есть, то об этом пишется в описании того или иного сообщения.
SendMessage можно отправить любому окну, для которого известен идентификатор, так что можно конкретнее?
0
|
|
|
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 18
|
|
| 27.11.2011, 16:32 [ТС] | |
|
Дело в том, что процессы(приложения) - консольные. Поэтому, я предполагал отправлять сообщения ориентируясь по PID процесса, а не окна.
0
|
|
|
162 / 158 / 19
Регистрация: 22.11.2011
Сообщений: 371
|
|
| 27.11.2011, 16:42 | |
|
В консоле некому/нечему сообщения принимать, так как очереди не существует... разве что создавать невидимое окно только для приёма сообщений...
0
|
|
|
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 18
|
|
| 27.11.2011, 16:48 [ТС] | |
|
А как же тогда системные процессы обмениваются сообщениями? Разве PID не достаточно?
Добавлено через 3 минуты Я ориентируюсь на книгу Гордеева "Операционные системы". В ней описывается механизм почтовых ящиков для передачи сообщений между процессами. И в частности функции: SEND_MESSAGE, WAIT_MESSAGE, SEND_ANSWER, WAIT_ANSWER.
0
|
|
|
162 / 158 / 19
Регистрация: 22.11.2011
Сообщений: 371
|
|||||||||||
| 27.11.2011, 16:55 | |||||||||||
|
Найти окно консоли возможно, в конце-концов это именно просто окно:
2
|
|||||||||||
|
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 18
|
|
| 27.11.2011, 17:00 [ТС] | |
|
Огромное спасибо. Не могли бы Вы объяснить код, пожалуйста. Особенно интересует, где само сообщение.Я так понимаю, это "235423", да?
0
|
|
|
162 / 158 / 19
Регистрация: 22.11.2011
Сообщений: 371
|
||||||
| 27.11.2011, 17:07 | ||||||
|
Само сообщение объявлено в качестве константы:
const int WM_CHAR = 0x102; Это стандартное сообщение Windows, генерируемое, когда символ попадает в окно (событие KeyPress в C#).
Если Вы планируете пересылать между окнами своё собственное сообщение, на которое вторая программа будет знать как реагировать, то советую почитать про регистрацию сообщений через функцию RegisterWindowMessage.
1
|
||||||
|
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 18
|
|
| 27.11.2011, 17:15 [ТС] | |
|
Я почитаю, но мне пока еще не все понятно. Тот код который Вы привели-это только отправляющая часть? Мне вообще это нужно вот для чего. Есть 3 программы, 2 из них отправляют сообщения в 3. А в 3 находится код, который что-то делает в зависимости от полученных сообщений. Все программы консольные. Получится ли это сделать используя такой способ отправки сообщений?
0
|
|
|
162 / 158 / 19
Регистрация: 22.11.2011
Сообщений: 371
|
|
| 27.11.2011, 17:17 | |
|
Вся загвоздка будет в том, что в консольном приложении у Вас нет очереди сообщений, т.е. негде обрабатывать собственные сообщения. Как я уже писал выше, можно будет создать невидимое окно только для принятия сообщений. Об этом можно почитать тут.
0
|
|
|
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 18
|
||||||
| 27.11.2011, 17:25 [ТС] | ||||||
|
Я так думал, что эти функции системы безотносительны к каким-либо окнам вообще.Наверно, SEND_MESSAGE из книги и SEND_MESSAGE в Windows API это разные вещи.
Добавлено через 4 минуты Попытался выполнить Ваш и что-то не получается.
0
|
||||||
|
162 / 158 / 19
Регистрация: 22.11.2011
Сообщений: 371
|
|
| 27.11.2011, 17:31 | |
|
Из того, что мне говорит google, для Windows я вообще мало что вижу по тематике межпроцессного взаимодействия... И в общем-то C# немного не тот язык, на котором подобное стоит изучать.
Добавлено через 5 минут Код-то тот, а вот FindWindow находит что-нибудь? Не равен ли consoleHandle IntPtr.Zero?
0
|
|
|
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 18
|
|
| 27.11.2011, 17:44 [ТС] | |
|
Да, consoleHandle равен 0.
Добавлено через 1 минуту Я так думал, что если в языке можно использовать API, значит и все возможности системы доступны будут, вне зависимости от самого языка. Добавлено через 3 минуты Все это я затеял ради учебной реализации алгоритма Деккера-простого алгоритма, не допускающего использование одного ресурса двумя процессами. Добавлено через 3 минуты Т.е когда один из процессов собирается войти в свою критическую секцию(место, откуда происходит доступ к общим ресурсам. В моем случае это файл.), он сообщает, основной программе, что, мол, хочу зайти. А уже основная программа, решает пускать или не пускать. И так же для второго процесса.
0
|
|
|
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
|
|
| 02.12.2011, 03:48 | |
|
Странный способ обмена сообщениями, есть более стандартные вещи типа WCF или IPC/RPC
http://msdn.microsoft.com/ru-r... 56779.aspx http://msdn.microsoft.com/en-u... w6576.aspx
0
|
|
| 02.12.2011, 03:48 | |
|
Помогаю со студенческими работами здесь
14
Отправка сообщений между дочерними и родительским процессами (fork,pipe,write,read) Передача handle между процессами Передача данных между процессами (pipe) MappingFile передача информацию между процессами Передача данных между потоками/процессами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|