На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
  
> Связь двух приложений
    Доброго всем здоровия!
    Одно приложение работает, потом вызывает второе и передает пару значений своих переменных, второе приложение отработало и передает в вызывающее полтора десятка своих переменных. Вот!
    Как это лучше организовать (DDE, Clippboar, мож че ище), я в виндах ламак, так что посоветуйте пожалуйста как это организовать покрасивше и самое главное побыстрее, а то влом через файлы передавать.
      Посмотри функции :
      OpenFileMapping(...)
      MapViewOfFile(...) и др. из этого ряда.
        Юзай WM_COPYDATA. Она за тебя создаст mapping.
          Ага, спасибо за WM_COPYDATA! Появляется ищо один вопрос. Как узнать HWND окошка, а то FindWindow как то не красиво. Вторую программу вызываю с помощью ShellExecute().
            Какого окошка ???
              Окошка приложения с которого вызывается вторая программа.
                Попробуй так:

                HWND hWnd = ((CMainFrame *)AfxGetMainWnd())->GetSafeHwnd();
                  Сорри, Builder :'(. Мож в API чето есть?
                    А может, когда вторая прога запустится, послать BROADCAST пользовательское сообщение WM_IAMHERE и в качестве параметра хендл окна и какой нибуть код, чтоб проверить. А родительское сообщение пошлет в ответ тож самое, только уже порожденному окну. Вот и связались.

                    Или использовать ShellExecuteEx котрая возвращает хэндл запущенного процесса, а понему уже узнать окно.

                    И вообще если проги обе твои, зачем тебе эту гадость вообще городить.
                      НУ почитай MSDN, способов куча.
                      В данном случае наверное проще всего через FileMapping. Хотя кому как...
                        Согласен с лунатиком  ;D
                        Ведь и оболочка Windows при создании посылает broadcast message. Лучше используй ещё RegisterWindowMessage для надёжности, хотя как там с Билдером, не знаю.
                          Cлать WM_COPYDATA в фанатичном режиме слегка подсадит поизводительность, т.е. если в задаче надо ИНОГДА вызвать второе приложение, и всегда только одно приложение, то это хороший метод.
                          А вообще глянь раздел Interproccess Communications - глаза разбегуться, выбери что больше нравиться (быстрее реализовать/быстрее будет работать/...)  :)
                          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                          0 пользователей:


                          Рейтинг@Mail.ru
                          [ Script execution time: 0,0267 ]   [ 17 queries used ]   [ Generated: 16.04.24, 09:13 GMT ]