Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Нашел интересное окно. Отловить в нем практически ничего не возможно. Окно называется "Сохранить как". Подскажите как нажать кнопку "Сохранить"
Если выбирать конкретно кнопку сохранить, то имеем код кнопки 00000001
Но при обращении к ней по этому коду ничего не происходит. Что-же это за окно такое безымянное какое-то.
Это всплывающее диалоговое окно. Его системный дескриптор можно получить с помощью WinAPI функции GetLastActivePopup(int hWnd).
Вот пример применения этой функции:
А на чекбоксах галачки програмно можно ставить если их нет.
т.е. Проверить если галочка, если нету то поставить если это необходимо. с помощью каких Win API функций это делается?
Нашел функцию в WinAPI:
Функция CheckDlgButton
Описание:function CheckDlgButton(Dlg: HWnd; IDButton: Integer; Check: Word);
Метит или снимает метку с оpгана упpавления кнопкой или изменяет состояние тpехкнопочного оpгана упpавления.
Паpаметpы:Dlg: Блок диалога, котоpый содеpжит кнопку.
IDButton: Модифициpуемый оpган упpавления кнопкой.
Сheck: удалена(0), отмечена(1), затенена(2).
Перед её выполнением какой функцией проверить состояние кнопки. В моём случае в чекбоксе.
в продолжении темы API
при сохранении - если это происходит повторно возникнет вопрос!
сохранить как
( файл существует заменить )
отбиваем автоматом ДА
Нашел функцию в WinAPI:
Функция CheckDlgButton
Описание:function CheckDlgButton(Dlg: HWnd; IDButton: Integer; Check: Word);
Метит или снимает метку с оpгана упpавления кнопкой или изменяет состояние тpехкнопочного оpгана упpавления.
Паpаметpы:Dlg: Блок диалога, котоpый содеpжит кнопку.
IDButton: Модифициpуемый оpган упpавления кнопкой.
Сheck: удалена(0), отмечена(1), затенена(2).
Перед её выполнением какой функцией проверить состояние кнопки. В моём случае в чекбоксе.
Для определения текущего состояния переключателя вы можете воспользоваться функцией IsDlgButtonChecked:
Эта функция возвращает состояние переключателя с идентификатором idButton, расположенного в диалоговой панели hdlg. Если переключатель находится в выключенном состоянии, возвращается нулевое значение. Для включенного переключателя возвращается значение 1. Значение 2 соответствует неактивному переключателю, изображенному серым цветом. В случае ошибки возвращается отрицательное значение -1.
---
Пример работы IsDlgButtonChecked можно глянуть тут
http://frolov-lib.ru/books/bsp/v12/ch3_2.htm
Решил вернуться к теме изучения WinAPI.
Пытаюсь с помощью программы Microsoft Spy++ v.9.00.21022 найти идентификатор чекбокса "Оптимизация", дабы проверить програмно стоит ли галка или нет.
Делаю следующее по пунктам.
1. Запустил терминал.
2. Открыл окно тестера.
3. В программе Spy++ вызвал поиск окна и прицелом навел на элемент "Оптимизация"
нажал кнопку ОК.
4. Бегаю по вкладкам следующего окна
И не могу понять где же мой искомый код этой кнопки.
Ilnur, YuraZ и другие научите определять этот код дескриптора нужного мне элемента.
Почему прошу научить, а не указать конкретно коды, потому что хочу сам научится определять и другие элементы. Хотя если укажите возможно мне легче будет найти их потом, зная что искать и где смотреть....
Здесь я приводил пример кода, как определить идентификатор кнопки "Старт".
Там же на рисунке показано, как находить идентификатор элемента управления.
Все элементы управления, расположенные в окне тестера стратегий, определяются аналогичным образом.
Например, судя по выложенной выше, картинке, идентификатор чекбокса "Оптимизация" (вкладка "Общие") - 0х405.
С кодами я разобрался. Единственное никак не могу отловить коды 2-х кнопок это даты для тестирования и оптимизации от "Дата" и до "Дата". Программа выводит 00000001. Ilnur подскажи коды этих кнопок.
Да, действительно, идентификаторы этих элементов совпадают. Поэтому воспользоваться функцией GetDlgItem() в данном случае не получиться.
Остается вариант их идентификации с помощью FindWindowExA(). Однако, основной вопрос в том, есть ли необходимость в их определении.
Возможность управлять этими элементами, т.е. задавать период оптимизации или тестирования, средствами WinAPI на MQL отсутствует.
Хотя может я и ошибаюсь.
Да, действительно, идентификаторы этих элементов совпадают. Поэтому воспользоваться функцией GetDlgItem() в данном случае не получиться.
Остается вариант их идентификации с помощью FindWindowExA(). Однако, основной вопрос в том, есть ли необходимость в их определении.
Возможность управлять этими элементами, т.е. задавать период оптимизации или тестирования, средствами WinAPI на MQL отсутствует.
Хотя может я и ошибаюсь.
найти элемент к примеру с ID - 0x0577( копка изменить экперта)
и прощелкать по цепочке NextWindow 3 раза как раз попадаем в поле дата От: далее еще два раза перебираем NextWindow и мы в поле дата До:
в обоих случаях просто заполнить поля даты
SetWindowTextA( hwndEditDATEbeg, sDateBeg);
SendMessageA(hwndEditDATEbeg, EN_UPDATE, _ID_EDIT_HEX_DATEbeg, 0);
SendMessageA(hwndEditDATEbeg, EN_CHANGE, _ID_EDIT_HEX_DATEbeg, 0);
..
в MSQL5 очень хотелось бы получить штатный инструмент общения с тестером...