Cупер! Большое спасибо! То что надо!
P.S. Правда у меня не работает((
Взял код из вышеприведеных ссылок.
#include <WinUser32.mqh>
//+------------------------------------------------------------------+
void start() {
int hwnd=WindowHandle(Symbol(),Period()),
htemp,hok,idcheck,max,min;
string name="12345";
//----
hwnd=GetAncestor(hwnd,2); // нашли главное окно
if (hwnd!=0) {
PostMessageA(hwnd,WM_COMMAND,33157,0); // открыли окно "Свойства" текущего графика
}
else {
Alert("Error :",GetLastError());
return;
}
hwnd=GetLastActivePopup(hwnd); // нашли хэндл окна "Свойства" текущего графика
htemp=GetWindow(hwnd,GW_CHILD); // нашли 1-ое дочернее окно
GetWindowTextA(htemp,name,6); // вытащили название окна
Alert("**************111************************");
Alert("hwnd :",hwnd);
Alert("htemp :",htemp);
Alert("hok :",hok);
Alert("idcheck :",idcheck);
Alert("name :",name);
Alert("**************222************************");
if(name!="Общие") { // сверили с тем, что нам надо
hok=GetDlgItem(hwnd,0x1); // нашли кнопку "OK"
SendMessageA(hok,BM_CLICK,0,0); // нажали кнопку "OK"
return;
}
idcheck=IsDlgButtonChecked(htemp,0x4EB); // получаем информацию о "положении" чекбокса
switch (idcheck)
{
case 0:
CheckDlgButton(htemp,0x4EB,1); // если выключен, то включаем
break;
case 1:
CheckDlgButton(htemp,0x4EB,0); // если включен, то выключаем
break;
}
//max=GetDlgItem(htemp,0x4E7); // нашли хэндл поля ввода максимума
//SendMessageA(max,WM_CLEAR,0,0); // послали сообщение очистить поле
//SetWindowTextA(max,"ВАШ_МАКСИМУМ"); // послали сообщение заполнить поле
//min=GetDlgItem(htemp,0x4E8); // нашли хэндл поля ввода максимума
//SendMessageA(min,WM_CLEAR,0,0); // послали сообщение очистить поле
//SetWindowTextA(min,"ВАШ_МИНИМУМ"); // послали сообщение заполнить поле
//hok=GetDlgItem(hwnd,0x1); // нашли кнопку "OK"
//SendMessageA(hok,BM_CLICK,0,0); // нажали кнопку "OK"
return;
}
//+------------------------------------------------------------------+
WinUser32.mqh взял из первой ссылки
При активации скрипт просто открывает окно свойств и больше ничего не делает...
полсе этого:
hwnd=GetLastActivePopup(hwnd); // нашли хэндл окна "Свойства" текущего графика
htemp=GetWindow(hwnd,GW_CHILD); // нашли 1-ое дочернее окно
GetWindowTextA(htemp,name,6); // вытащили название окна
переменная name принимает значение "Для с"
код
if (name!="Общие") { // сверили с тем, что нам надо
hok=GetDlgItem(hwnd,0x1); // нашли кнопку "OK"
SendMessageA(hok,BM_CLICK,0,0); // нажали кнопку "OK"
}
не срабатывает, кнопка "ОК" не нажимается...
дальнейший код судя по всему тоже не срабатывает...
в журнале:
2009.11.16 00:29:49 Script ScaleOnOff AUDUSD,H1: removed
2009.11.16 00:29:49 Script ScaleOnOff AUDUSD,H1: loaded successfully
Что я не правильно делаю?
#include <WinUser32.mqh> //+------------------------------------------------------------------+ void start() { int hwnd=WindowHandle(Symbol(),Period()), htemp,hok,idcheck,max,min; string name="12345"; //---- hwnd=GetAncestor(hwnd,2); // нашли главное окно if (hwnd!=0) { PostMessageA(hwnd,WM_COMMAND,33157,0); // открыли окно "Свойства" текущего графика } else { Print("Error :",GetLastError()); return; } hwnd=GetLastActivePopup(hwnd); // нашли хэндл окна "Свойства" текущего графика htemp=GetWindow(hwnd,GW_CHILD); // нашли 1-ое дочернее окно GetWindowTextA(htemp,name,6); // вытащили название окна if(name!="Общие") { // сверили с тем, что нам надо hok=GetDlgItem(hwnd,0x1); // нашли кнопку "OK" SendMessageA(hok,BM_CLICK,0,0); // нажали кнопку "OK" } idcheck=IsDlgButtonChecked(htemp,0x4EB); // получаем информацию о "положении" чекбокса if(idcheck==0) CheckDlgButton(htemp,0x4EB,1); // если выключен, то включаем if(idcheck==1) { CheckDlgButton(htemp,0x4EB,0); // если включен, то выключаем hok=GetDlgItem(hwnd,0x1); // нашли кнопку "OK" SendMessageA(hok,BM_CLICK,0,0); // нажали кнопку "OK" } max=GetDlgItem(htemp,0x4E7); // нашли хэндл поля ввода максимума SendMessageA(max,WM_CLEAR,0,0); // послали сообщение очистить поле SetWindowTextA(max,"1.52"); // послали сообщение заполнить поле min=GetDlgItem(htemp,0x4E8); // нашли хэндл поля ввода максимума SendMessageA(min,WM_CLEAR,0,0); // послали сообщение очистить поле SetWindowTextA(min,"1.47"); // послали сообщение заполнить поле hok=GetDlgItem(hwnd,0x1); // нашли кнопку "OK" SendMessageA(hok,BM_CLICK,0,0); // нажали кнопку "OK" return; }
Скрипт практически не отличается от выложенного по ссылке. Скрипт рабочий, проверен на EURUSD.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте.
Мне хотелось бы сбросом скрипта (drag-n-drop) на график поменять некие свойства графика, обычно вызываемые по F8. В частности поставить и убрать галочку "Фиксировать масштаб".
Пытался найти в справке - ничего не нашел(( Возможно плохо искал... Гугл грит, что из скриптов нет возможности менять свойства графика вообще, НО! Я нашел скрипт (платный, в составе платной сборки) который при сбрасывании его на график - меняет цветовую схему с любой на Ч/Б. Значит это все таки возможно? Подскажите пожалуйста, как это сделать?
Спасибо.