Как правильно сделать обмен сообщениями между окнами ?

 
Тема такая:

1. Надо из программы написанной на Делфи открыть Метатрейдер через старт.ини открыть нужный профиль и запустить эксперта.
2. В эксперте надо чтобы на графиках профиля обновились данные, после анализа вывели сообщения в файл, и сформировали сообщение программе на Дельфи , допустим с параметром = 1.
3. В программе если пришёл параметр=1 открыть сформированный файл с анализом.
4. Послать сообщение МТ о закрытии.

Может кто уже делал нечто подобное. Неплохо было бы посмотреть на кусочки кода.

МТ4 я открываю, профиль тоже
Из Дельфи МТ4 при помощи сообщения закрываю.
Сообщение В МТ4 формирую и посылаю из МТ4 но в Дельфи получить его не получается.
А ещё сделать правильно ожидание обновления не получается.
 
Сообщение В МТ4 формирую и посылаю из МТ4 но в Дельфи получить его не получается.


А с помощью какой технологии Вы это делаете(короче как пытаетесь отправить, могут быть несколько вариантов)
 
Сообщение В МТ4 формирую и посылаю из МТ4 но в Дельфи получить его не получается.
А ещё сделать правильно ожидание обновления не получается.

Приведите примеры MQL4 кода, пожалуйста.
 
В ДЕЛФИ делаю так:

1. str := Direct+'terminal.exe '+ Direct+'"'+'config\start.ini'+'"';

winexec(PChar(str),SW_SHOWMINIMIZED);
В директ - путь к МТ4

2. Затем

type
TForm1 = class(TForm)
.........
private
Procedure WM_Get(var a: TMessage); message WM_USER+7;
implementation
Procedure TForm1.WM_Get(var a: TMessage);
begin
if a.LParam=1 then
begin
form1.StatusBar1.Panels.Items[2].Text:='Обработка в Метатрейдере ВЫПОЛНЕНА !!!';
// Просмотр созданного файла
OpenDialog2.InitialDir:=Direct+'experts\files\ANALIZ_SIT\';
OpenDialog2.Filter := 'TXT files (*.txt)|*.txt';
opendialog2.title:='';
if form1.OpenDialog2.Execute then
begin
form1.Memo1.Lines.Clear;
form1.Memo1.Font.Name:='Fixedsys';
form1.Memo1.Lines.LoadFromFile(form1.OpenDialog2.FileName);
PostMessage(HWin('MetaTrader '),WM_CLOSE,0,0);
end;//if1
end//if2
else
begin
form1.StatusBar1.Panels.Items[2].Text:='Обработка в Метатрейдере НЕ ВЫПОЛНЕНА !!!';
end;

end;
(HWin - определяет соотв-но дескриптор окна МТ4 по части имени заголовка)

В файле старт.ини записано:

Profile=TRENDS_COMMON

Template=shablon1.tpl
Script=SS_trend_COMMON
ScriptParameters=param.set

В МетаЭдиторе делаю след:

1. Ожидаю подключения и жду обновления данных на графиках открытого профиля

while (!IsConnected())
{ Comment("Не подключен !!!");}

Comment(" ");
RefreshRates();

2. После подключения и обработки посылаю сообщение

hwnd = FindWindowA("TForm1","Создание списка просматриваемых инструментов");
Print(hwnd);
hwnd = PostMessageA(hwnd,WM_USER+7,0,ready);
Comment("Сделано !!!",ready,hwnd);
3. Ну и соответственно в подключенной библиотеке WinUser32.mqh
добавил строчку

#define WM_USER 0x0400

Сегодня добился следующего:

Из делфи МТ запускается, но сообщение при этом не приходит, как будто не запускается эксперт.....???

Если программа в Дельфи уже запущена и из неё запущен МТ4, то при ручном добавлении скрипта в МТ4, сообщение посылается, программой на Дельфи принимается и всё выполняется.

Ощущение, что тонкий момент где-то при запуске МТ4 с параметрами.... Надеюсь более-менее понятно изложил ?
 
Из делфи МТ запускается, но сообщение при этом не приходит, как будто не запускается эксперт.....???


А Вы в этот момент где находитесь, нет возможности посмотреть в правый верхний угол чарта?(если мордочка с улыбкой значит эксперт работает :) )

Гдето на форуме поднимался вопрос о том что при запуске терминала планировщиком эксперты не работают, но я в эту ветку не глядел и чем дело закончилось не знаю. Я пробовал терминал запускать и из приложения сбацанного на делфи и из автозагрузки. И каждый раз все было окей, только для начала надо все запустить проверить работоспособность, а потом закрыть терминал, после этого он и запускается точно также. Я пока остановился на автозагрузке для моих задач этого достаточно.

Вот прикладываю набросок того что делал когда-то я, был реализован только запуск и проверка соединения, но потом я это дело забросил.
http://www.fxfilecheng.narod.ru/ExpertAdvisor.rar


На счет сообщений я так понял у Вас все нормально.
 
Гдето на форуме поднимался вопрос о том что при запуске терминала планировщиком эксперты не работают, но я в эту ветку не глядел и чем дело закончилось не знаю.

Это давно уже исправили в одном из билдов.
 
Попробуйте через SendMessage.
Причина обращения: