|
2 / 2 / 0
Регистрация: 13.05.2023
Сообщений: 19
|
|
Как отловить изменение "Me.Text" в "VB.NET"13.05.2023, 12:57. Показов 2842. Ответов 52
Метки нет (Все метки)
Добрый день!))
Вопрос такой. Как отловить событие изменения текста в "Me.Text"? Меняется этот текст другой программой, так что, нужно не проверить изменился-ли текст, а именно отловить событие! Зарание спасибо!
0
|
|
| 13.05.2023, 12:57 | |
|
Ответы с готовыми решениями:
52
Как отловить изменение переменной Как отловить изменение в контроле Label Как отловить изменение размера дива |
|
2 / 2 / 0
Регистрация: 13.05.2023
Сообщений: 19
|
|
| 20.05.2023, 17:10 [ТС] | |
|
Yury Komar, К сожалению как видно на скрине, нет SendMessage без "W", а с ней, моя программа наконец-то начала реагировать на приходящие сообщения, но почемуто нечего не присылает и заголовок становится просто пустым.
m.Msg содержит цыфру 12 WM_SETTEXT содержит цыфру 12 WM_NCUAHDRAWCAPTION содержит цыфру 174 Но не текст сообщения...
0
|
|
|
Модератор
4375 / 3445 / 512
Регистрация: 27.01.2014
Сообщений: 6,267
|
||||||
| 20.05.2023, 18:47 | ||||||
|
Qutrum, WM_NCUAHDRAWCAPTION не присылает сообщения, она может использоваться как тригер.
а вот Lparam у WM.SETTEXT должен иметь текст сообшения, в примерах выше есть код, вытягивающмй этот текст в String. Добавлено через 5 минут Qutrum, а попробуйте в MT добавить LPARAM в коде SendMessageW
и да, если WM_SETTEXT ловится вашей программой, тогда ловить WM_NCUAHDRAWCAPTION уже нет необходимости.
0
|
||||||
| 21.05.2023, 09:21 | |
|
По моему товарищи Вы страдаете ерундой!
Есть разделяемая память. В программе отправителе пуляете текст в блок памяти. На принимающей стороне создаёте поток для чтения этой памяти в бесконечном цикле с необходимым интервалом, как только потоком чтения обнаруживается изменение сообщения он создаёт событие, где параметром отдаёт само сообщение. Всё. Как реагировать на событие потока думаю объяснять не надо.
0
|
|
|
Модератор
4375 / 3445 / 512
Регистрация: 27.01.2014
Сообщений: 6,267
|
|
| 21.05.2023, 10:43 | |
|
Uswer, Да тут не факт, что этот MetaTrader4 способен посылать в разделяему память...
Не факт, что ТС с этим разберется.
0
|
|
|
2 / 2 / 0
Регистрация: 13.05.2023
Сообщений: 19
|
|||||||||||
| 21.05.2023, 17:24 [ТС] | |||||||||||
|
Uswer, Спасибо за вариант, но МТ4Б из-за своего уровня защиты, не разрешает такого делать. А если и делать так, то только через создание своей DLL, в которой и будет вызываться необходимый для этого функционал.
В общем, это точно не проще)) Добавлено через 1 час 43 минуты Yury Komar, Ура!)) Добился я искомого, что правда, не совсем тем коротким путём, что искал)) Решение: На стороне MetaTrader4, в советнике пишем следующий код.
Код старался комментировать на понятном языке, но если гдето неправильно чтото сказал, поправьте))
1
|
|||||||||||
|
Модератор
4375 / 3445 / 512
Регистрация: 27.01.2014
Сообщений: 6,267
|
|
| 21.05.2023, 17:42 | |
|
Qutrum, Ну я вас поздравляю! Пусть и немного не так, как на самом деле должно быть, ввиду непонятных огранечений самого MT4, но если результата удалось добиться - я за Вас очень рад.
![]() Тоесть, вы посылаете текст заголовку все тем же путем, через SetWindowText, но в качестве тригера дёргаете иконку, чтоб ваше ПО среагировало? А как с задержками, всетаки дополнительные доли секунд могут пройти между установкой заголовка и манипуляциями с иконкой (пусть и впустую)?
1
|
|
|
2 / 2 / 0
Регистрация: 13.05.2023
Сообщений: 19
|
|
| 21.05.2023, 17:45 [ТС] | |
|
Yury Komar, Да, вся печаль заключается в ограничениях МТ4... На С++ всё было-бы намного проще))
0
|
|
|
Модератор
4375 / 3445 / 512
Регистрация: 27.01.2014
Сообщений: 6,267
|
|
| 21.05.2023, 17:56 | |
|
а по поводу возврата заголовка в исходное значение - думаю лишнее и тоже доли секунд займет на выполнение этого кода, а для Вас, я так понял, они важны.
Думаю будет правильней один раз найти хэнд окна по заголовку, его хранить и в него слать, нет необходимости каждый раз его искать перед отправкой текста заголовку. Добавлено через 5 минут Qutrum, Кстати, с таким простым функционалом, Вы легко можете создать свью DLL, описал все те же WinAPI, и посылать текст уже по-человечески... Как бы, сейчас решение нашли, на досуге можете заняться этим... Как и писал выше Uswer.
1
|
|
|
Администратор
|
||||||||
| 21.05.2023, 18:07 | ||||||||
|
Qutrum, раз из MT4 можно вызвать SendMessage, то проще слать свое сообщение с кодом WM_USER+n (n>=0). И обрабатывать его в приложении.
If переменная = &h0080 Then уже отменили? И для улучшения читабельности не помешает ввести константу.
0
|
||||||||
|
2 / 2 / 0
Регистрация: 13.05.2023
Сообщений: 19
|
|
| 21.05.2023, 18:08 [ТС] | |
|
Yury Komar, Да, вы правильно говорите, но здесь такой момент, что весь скрипт на стороне МТ4 выполняеься от начала и до конца каждый "ТИК". Следовательно, хранить хэндл нужно либо в файле, либо в буфере обмена (что не реально, так как в любой момент он может изминиться пользователем) и перечитывать снова и снова от-туда... Что по сути, будет дольше чем читать его каждый раз из функции FindWindowW.
А просто в переменной хранить нельзя, так как при каждом тике, будет в любом случае она пересоздаваться и перезаписываться. Вообще, суть работы скриптов и советников в МТ4 очень похожа на работу РНР. Так как сама МТ4, выступает скорее в роли сервера на котором работают эти самые скрипты и советники... У скриптов советников, просто за основу взят синтаксис С++, но это не С++)) Это вообще язык MQL4
0
|
|
|
Модератор
4375 / 3445 / 512
Регистрация: 27.01.2014
Сообщений: 6,267
|
|
| 21.05.2023, 18:28 | |
|
Qutrum, тоесть "снаружи" функции OnTick() совсем нельзя создать переменную? Да, и правда жесткие ограничения.
0
|
|
|
Администратор
|
|||
| 21.05.2023, 18:41 | |||
1
|
|||
|
2 / 2 / 0
Регистрация: 13.05.2023
Сообщений: 19
|
|||||||||||||
| 21.05.2023, 18:47 [ТС] | |||||||||||||
|
OwenGlendower, Не SendMessage, а SendMessageW... А они немного отличаются))
If txt_m = "0x0080" Then - Это не жесть)) Это сравнение с приходящим текстом)) А так нужно, потому, что вот что может в моей программе вообще приходить:
Добавлено через 3 минуты
0
|
|||||||||||||
|
Администратор
|
||||||||||
| 21.05.2023, 19:16 | ||||||||||
1
|
||||||||||
| 21.05.2023, 20:09 | ||||||
|
А так ни проще? У окна есть два Event (a) Один MyBase.TextChanged и второй это Me.Shown
Кликните здесь для просмотра всего текста
можно тоже самое и через AddHandler ковырнуть
0
|
||||||
|
Администратор
|
|
| 21.05.2023, 20:23 | |
|
edmonsur, ТС пробовал нечто подобное, насколько я понимаю. Не сработало.
0
|
|
|
Администратор
|
|
| 21.05.2023, 20:33 | |
|
edmonsur, окей.
1
|
|
| 21.05.2023, 21:05 | ||||||
0
|
||||||
|
2 / 2 / 0
Регистрация: 13.05.2023
Сообщений: 19
|
|||||
| 21.05.2023, 21:10 [ТС] | |||||
|
MSDN help: Отправляет указанное сообщение в окно или окна. Функция SendMessage вызывает оконную процедуру для указанного окна и не возвращает значение до тех пор, пока оконная процедура не обработает сообщение. Словарь сообщений мне нужен не для того, чтобы их обрабатывать, а для того, чтобы на них реагировать как на события. Если посмотреть на моё решение выше, то думаю становится понятно, что я эти вызовы использую не по назначению)) Да и потом, на данный момент идёт проектирование и создаётся каркас программы. В последствии, всё ненужное удалится))
0
|
|||||
| 21.05.2023, 21:10 | |
|
как отловить изменение масштаба страницы
Как отловить событие изменение вида курсора?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|