Хочу передать цифру из одного мт4 в другой через wParam - не принимает, наврено терминал принимат сообщение раньше окна графа и удаляет его.
шлю вот так
SendMessageA (HWND, NULL, 543, 0);
принимаю вот так
Не алертует ни 123 ни 456
Если я что-нибудь в чем-нибудь еще понимаю, то функция start() и сама вызывается по сообщению прихода нового тика. Вполне возможно, что другие сообщения окон к этому моменту уже отработаны очередью, которая, не поняв идентификатор 543, просто пропустит его мимо ушей.
Чтоб все правильно работало, используйте эмуляцию тика, например, PostMessageA (hwnd, WM_COMMAND, 2, 1). Пошерстите форум, тема замусоленная донельзя.
Вот, к примеру, разбирайтесь... https://www.mql5.com/ru/code/8710
форум то я прошерстел, и не один - на этот вопрос ответа не нашел. Задача: передать строку из одного мт в другой через атом. а идентификатор атома передать как wParam sendmessage.
эмуляция тика конечно нужна, но атом тоже передать надо.
Че-то не глянул в ваш код внимательно сначала - функция Comment возвращает тип void, зачем ее в if-то?? Поэтому условие и не срабатывает.
А PeekMessageA лучше все-таки не в if(), а в while(), бог его знает, сколько там сообщений в очереди лежит.
Че-то не глянул в ваш код внимательно сначала - функция Comment возвращает тип void, зачем ее в if-то?? Поэтому условие и не срабатывает.
А PeekMessageA лучше все-таки не в if(), а в while(), бог его знает, сколько там сообщений в очереди лежит.
Извиняюсь за писанину, в первоначальном варианте не было if(coment все равно не принимал. отсылать отсылал - но не принимал. А теперь и не отсылает(
Я вот и спрашиваю какое вообще WM сообщение надо отослать чтоб его ни кто не считал кроме самого советника?
Гипотетически нужно бы создать свое собственное окно и передавать сообщение в него, но реализовать это можно только в dll, и все равно останутся проблемы с синхронизацией, потому что, как уже сказал alsu, терминал вызывает start из очереди сообщений и не смотрит на то, есть ли в стеке уже предыдущий вызов start, в котором Вы принимаете другое сообщение. В результате контекст приемного скрипта сбрасывается (в терминале только одна копия переменных). Если уж и писать приемо-передатчик на dll, то в вашем случае вероятно имеет смысл воспользоваться пайпами или сокетами (с чем проще работать исходя из собственного опыта).
Окно - то есть форму с Visible=false например? Допустим я создал форму. Что надо вписать вот здесь: SendMessageA (HWND, ??????????, 543, 0); чтобы форма принила это сообщение и чтобы его считал именно мой код и передал дальше в советник.....
Так стоп!
зачем в окно слать сообщение если советнику в любом случае надо так же передать это сообщение? Как совтеник то узнает цифру?
А может через MMF? Есть у кого нибудь примерчик?
Если делать капитально, то нужно определить класс окна и функцию обработки сообщений. Так можно было бы реализовать целый протокол с подтверждением получения данных. Если по-простому, то можно создать контрол типа поля ввода или лэбела и посылать ему WM_SETTEXT или вызывать SetWindowText, а затем просто читать содержимое уже из скрипта-приемника (GetWindowText).
Окно - это одно из средств коммуникации в Windows (бай дизайн), советник может оперировать окнами напрямую (до некоторой степени) или "по полной программе", если действовать через dll.
Если делать капитально, то нужно определить класс окна и функцию обработки сообщений. Так можно было бы реализовать целый протокол с подтверждением получения данных. Если по-простому, то можно создать контрол типа поля ввода или лэбела и посылать ему WM_SETTEXT или вызывать SetWindowText, а затем просто читать содержимое уже из скрипта-приемника (GetWindowText).
Окно - это одно из средств коммуникации в Windows (бай дизайн), советник может оперировать окнами напрямую (до некоторой степени) или "по полной программе", если действовать через dll.
С SetText пример здоровский по моему. А пример магете маленький?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Хочу передать цифру из одного мт4 в другой через wParam - не принимает, наврено терминал принимат сообщение раньше окна графа и удаляет его.
шлю вот так
SendMessageA (HWND, NULL, 543, 0);
принимаю вот так
Не алертует ни 123 ни 456