Ошибки, баги, вопросы - страница 3086

 

Веду отладку, делаю распринтовку какой-то информации. После каждого запуска мешают записи в Журнале, которые были сделаны на предыдущем запуске.

Поэтому хочется перед запуском очищать Лог от ненужной информации. Грубо говоря, нужно через MQL нажать на этот пункт меню:

Штатной функции точно не будет, подскажите решение через WinAPI.

 
fxsaber #:

Штатной функции точно не будет, подскажите решение через WinAPI.

запустил терминал, правой мышью на вкладке эксперты - открыл блокнотом текущий лог, удалил все и сохранил блокнотом

результат - пустой файл (проверил)


удалить файл лога терминал не даст, играться с окнами и кликами мышкой, имхо - трудоемко


я б в WinAPI посмотрел бы как открыть файл для записи/чтения и попробовал бы файловый указатель в начало файла поставить и сохранил бы файл - кажется в статьях были примеры как писать файлы с помощью WinAPI


UPD: статья от Метаквот  ФАЙЛОВЫЕ ОПЕРАЦИИ ЧЕРЕЗ WINAPI

 
fxsaber #:

Веду отладку, делаю распринтовку какой-то информации. После каждого запуска мешают записи в Журнале, которые были сделаны на предыдущем запуске.

Поэтому хочется перед запуском очищать Лог от ненужной информации. Грубо говоря, нужно через MQL нажать на этот пункт меню:

Штатной функции точно не будет, подскажите решение через WinAPI.

Пожалуйста:

#import "user32.dll"
long SendMessageW(long wnd,uint Msg,long param,ulong l=0);
#import

void OnStart()
  {
   SendMessageW(0x60574,0x111,0x8135);
  }

wnd - дескриптор главного окна, найти свой.

0x8134 - третий параметр для очистки логов с вкладки "Журнал"

Проверил, работает.

 
Aliaksandr Hryshyn #:

Пожалуйста:

wnd - дескриптор главного окна, найти свой.

0x8134 - третий параметр для очистки логов с вкладки "Журнал"

Проверил, работает.

нужная штука, забрал, спасибо

#import "user32.dll"
long SendMessageW(long wnd, uint Msg, long param, ulong l = 0);
long GetAncestor(long hwnd, uint gaFlags);
#import
#define GA_PARENT 1
#define GA_ROOT 2
#define GA_ROOTOWNER 3
//+------------------------------------------------------------------+
void OnStart()
{
   long handle = ChartGetInteger(0, CHART_WINDOW_HANDLE);
   if(handle != 0)
   {
      long h = GetAncestor(handle,GA_ROOTOWNER);
      SendMessageW(h, 0x111, 0x8135);
   }
}
 
Aliaksandr Hryshyn #:
Igor Makanu #:

Спасибо! Жаль, работает только при активной вкладке Лога.

 
fxsaber #:

Спасибо! Жаль, работает только при активной вкладке Лога.

я про это и писал - найти нужную вкладку и дать ей фокус и потом лишь отправить сообщение.... это в пару строк кода не получится

но для отладки код @Aliaksandr Hryshyn работает, по мне так удобно

 
Igor Makanu #:

для отладки код @Aliaksandr Hryshyn работает, по мне так удобно

Да, благодарен.

 
MQL_User #:

Всем здравствуйте.

Никто не подскажет, можно ли как-нибудь отключить горизонтальную прокрутку графика горизонтальным перемещением курсора мыши?

Можно. И колесом тоже.

Всё есть в справке. Главное - читать.

Документация по MQL5: Операции с графиками / ChartSetInteger
Документация по MQL5: Операции с графиками / ChartSetInteger
  • www.mql5.com
ChartSetInteger - Операции с графиками - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
fxsaber #:

Спасибо! Жаль, работает только при активной вкладке Лога.

Возможно, поможет (работает в четверке):

#define  GA_ROOT 2

// получаем системный дескриптор основного окна терминала
hMetaTrader = GetAncestor(WindowHandle(Symbol(), Period()), GA_ROOT);

// ищем окно "Терминал"
hControlBar = GetDlgItem(hMetaTrader, 0xE81E);
hControlBar = GetDlgItem(hControlBar, 0x0051);

// ищем список указанной вкладки (0 - эксперты, 1 - журнал)
hListView = GetDlgItem(hControlBar, (iTab == 0 ? 0x8A6A : 0x81B9));
 
Andrey Khatimlianskii #:

Возможно, поможет (работает в четверке):

Спасибо, надо будет посмотреть коды окон в пятерке.