Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте, MQL5 Community!
Я застрял на очень простой операции: копирование кода из MetaEditor. Уже 2 дня пытаюсь победить, только, по-видемому, это сильнее меня. Хотя мой вопрос и не относится к MQL5, ответ на него будет ценнен всем пользователям продуктов MetaQuotes для Windows. Я использую функциональность Windows SDK для открытия файла в MetaEditor. Запускаю процесс metaeditor64.exe в C#, посылаю команду "-open" с именем файла, посылаю комбинацию клавиш Ctrl+A для выделения текста. Все работает как часы. Дальше труба. MetaEditor не воспринимает комбинацию Ctrl+C. Если пальцами с клавы, то работает. С помощью кода нет. Что я уже испробовал:
1. Импортирую user32.dll. С помощью функции GetForgroundWindow() нахожу активное окно MetaEditor. Находит без проблем. Так же без проблем могу найти заголовок окна с помощью GetWindowText(). Затем с помощю keybd_event симулирую Ctrl down, C down, C up, Ctrl up - эквивалент Ctrl+C. Файл открыт, текст выделен, буфер обмена ПУСТ. Также пробовал InputSimulator, что то же самое и что также неифективно.
2. Пробовал посылать Windows Messages вот так:
Этот код фокусирует handle на активный элемент программы. Так как текст выделен в файле, этим элементом должен быть Edit Control или Rich Edit Control. Код прекрасно работает с блокнотом, возвращая написанное. С MetaEditor тот же код возвращает string.Empty. Напомню, все функции в коде, родные члены Windows API.
Вопросы к разработчикам: возможна ли работа внутренностей MetaEditor с Windows API? Понимает ли MetaEditor стандартные сообщения от Windows, такие как WM_GETTEXT? Как MetaEditor работает с буфером обмена? Возможна ли кодовая операция копирования выделенного из MetaEditor?
Я начинающий, так что возможно какие-то из моих вопросов отдают глупостью. Это от неопытности и незнания. Помогите, пожалуйста!