Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.141.41.187] |
|
Сообщ.
#1
,
|
|
|
Доброго всем здоровия!
Одно приложение работает, потом вызывает второе и передает пару значений своих переменных, второе приложение отработало и передает в вызывающее полтора десятка своих переменных. Вот! Как это лучше организовать (DDE, Clippboar, мож че ище), я в виндах ламак, так что посоветуйте пожалуйста как это организовать покрасивше и самое главное побыстрее, а то влом через файлы передавать. |
Сообщ.
#2
,
|
|
|
Посмотри функции :
OpenFileMapping(...) MapViewOfFile(...) и др. из этого ряда. |
Сообщ.
#3
,
|
|
|
Юзай WM_COPYDATA. Она за тебя создаст mapping.
|
Сообщ.
#4
,
|
|
|
Ага, спасибо за WM_COPYDATA! Появляется ищо один вопрос. Как узнать HWND окошка, а то FindWindow как то не красиво. Вторую программу вызываю с помощью ShellExecute().
|
Сообщ.
#5
,
|
|
|
Какого окошка ???
|
Сообщ.
#6
,
|
|
|
Окошка приложения с которого вызывается вторая программа.
|
Сообщ.
#7
,
|
|
|
Попробуй так:
HWND hWnd = ((CMainFrame *)AfxGetMainWnd())->GetSafeHwnd(); |
Сообщ.
#8
,
|
|
|
Сорри, Builder :'(. Мож в API чето есть?
|
Сообщ.
#9
,
|
|
|
А может, когда вторая прога запустится, послать BROADCAST пользовательское сообщение WM_IAMHERE и в качестве параметра хендл окна и какой нибуть код, чтоб проверить. А родительское сообщение пошлет в ответ тож самое, только уже порожденному окну. Вот и связались.
Или использовать ShellExecuteEx котрая возвращает хэндл запущенного процесса, а понему уже узнать окно. И вообще если проги обе твои, зачем тебе эту гадость вообще городить. |
Сообщ.
#10
,
|
|
|
НУ почитай MSDN, способов куча.
В данном случае наверное проще всего через FileMapping. Хотя кому как... |
Сообщ.
#11
,
|
|
|
Согласен с лунатиком ;D
Ведь и оболочка Windows при создании посылает broadcast message. Лучше используй ещё RegisterWindowMessage для надёжности, хотя как там с Билдером, не знаю. |
Сообщ.
#12
,
|
|
|
Cлать WM_COPYDATA в фанатичном режиме слегка подсадит поизводительность, т.е. если в задаче надо ИНОГДА вызвать второе приложение, и всегда только одно приложение, то это хороший метод.
А вообще глянь раздел Interproccess Communications - глаза разбегуться, выбери что больше нравиться (быстрее реализовать/быстрее будет работать/...) :) |