
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Конечно только ДЛЛ. А отдельная программа тут совершенно не к месту.
Насчёт класса "32768" (всплывающее меню) - это действительно какая-то хитрая штука. Есть штатные WinApi функции для работы с меню - они для всплывающего меню тоже работают, но только если ты сам создал это меню и знаешь его хэндл. А вот получить хэндл чужого всплывающего меню с помощью GetMenu почему-то не удаётся, а соответственно и вытянуть инфу из него не получится. Я гуглил на эту тему, но тоже ничего конкретного не нашёл. А в MSDN сказано что, что Popup-menu относятся в какой-то технологии Microsoft Active Accessibility, а там всё как-то запутано... В общем я и забил на это дело :) Но возможно удастся получить хэндл меню с помощью хуков, о чём я писал выше. А ещё лучше - подмена оконной процедуры. Короче перехватить сообщение о создании меню и узнать оттуда его хэндл, а может и всю остальную инфу.
А можно пример функции которую можно поместить в свою DLL, если хендл меню заранее получен .
Например прочитать text одного из пунктов. Ведь эта программа делает это без проблем.
И кстати зачем получать хендл чужого окна, если мы мы это сделаем из терминала, это же свой процесс.
Прикрепил очень полезную программу которая предназначена для работы как раз с такими меню.
А можно пример функции которую можно поместить в свою DLL, если хендл меню заранее получен .
Например прочитать text одного из пунктов. Ведь эта программа делает это без проблем.
И кстати зачем получать хендл чужого окна, если мы мы это сделаем из терминала, это же свой процесс.
Прикрепил очень полезную программу которая предназначена для работы как раз с такими меню.
Так и DLL - это тоже свой процесс. Она выполняется в том же самом процессе, и даже в том же потоке, что и скрипт (советник) вызывавший её. Так что нет абсолютно никакой разницы, откуда ты вызываешь функцию. Щас пытаюсь разобраться с исходником той проги, которую ты выложил. Там всё на ассемблере, а я не силён в нём... Надо хотя бы разобраться, как получить хэндл меню.
Так и DLL - это тоже свой процесс. Она выполняется в том же самом процессе, и даже в том же потоке, что и скрипт (советник) вызывавший её. Так что нет абсолютно никакой разницы, откуда ты вызываешь функцию. Щас пытаюсь разобраться с исходником той проги, которую ты выложил. Там всё на ассемблере, а я не силён в нём... Надо хотя бы разобраться, как получить хэндл меню.
Я уже разобрался в чём было дело, полистав исходники той проги. Оказывается нужно получать хэндл всплывающего меню с помощью SendMessage (hwnd, MN_GETHMENU,0,0), а вовсе не GetMenu(hwnd), как я полагал. Нигде об этом почему-то не сказано в документации. Ну тогда вопрос решён. Можно даже без написания DLL обойтись по идее. Щас набросаю вариантик.
Я уже разобрался в чём было дело, полистав исходники той проги. Оказывается нужно получать хэндл всплывающего меню с помощью SendMessage (hwnd, MN_GETHMENU,0,0), а вовсе не GetMenu(hwnd), как я полагал. Нигде об этом почему-то не сказано в документации. Ну тогда вопрос решён. Можно даже без написания DLL обойтись по идее. Щас набросаю вариантик.
Да запихать то не проблема... Зато есть проблема в том, что как выяснилось, все элементы этого меню имеют свойство ownerdraw, это значит в самом меню они не хранятся, а присылаются ему приложением по запросу. Единственное что удаётся вытянуть из меню - это количество элементов. Поэтому видимо без ДЛЛ не обойтись, т.к. придётся перехватывать сообщения, как это и сделано в MenuSpy
Итак, результат получен. Всё оказалось намного проще, чем мы предполагали сначала. Вкладываю демонстрационный скрипт. Там в коде нужно поменять название сервера на то, которое вам нужно, и всё. Скрипт коннектитися к этому серверу.
Итак, результат получен. Всё оказалось намного проще, чем мы предполагали сначала. Вкладываю демонстрационный скрипт. Там в коде нужно поменять название сервера на то, которое вам нужно, и всё. Скрипт коннектитися к этому серверу.