Как программно деинициализировать эксперт?

 

Здравствуйте! Не подскажете, как программно деинициализировать эксперт? простой вызов деинит() не помогает...

спасибо)

 

Вот Ильнур, как-то помог:

// Функция включения/отключения эксперта.
void ExpertEnabled (bool Switch) // TRUE - включить эксперт, FALSE - отключить эксперт.
 {
  int HandlWindow = WindowHandle (Symbol(), Period()); // Системный дескриптор окна.
  int HandlMT4;        // Системный дескриптор окна МТ4.
  int HandlToolbar;    // Системный дескриптор окна инструментов.
  // Массвы.
  int    ArIntTemp[1]; // Временный массив.
  //----
  if (Switch == true) // Если требуется разрешить работу эксперта.
   {
    if (!IsExpertEnabled()) // Разрешаем работу экспертов, если она была запрещена.
     {
      HandlMT4 = GetAncestor (HandlWindow, 2);	
      HandlToolbar = GetDlgItem (HandlMT4, 0x63);
      ArIntTemp[0] = HandlToolbar;
      SendMessageA (HandlMT4, WM_COMMAND, 33020, ArIntTemp);
     }
   }
  else // Если требуется запретить работу эксперта.
   {
    if (IsExpertEnabled()) // Разрешаем работу экспертов, если она была запрещена.
     {
      HandlMT4 = GetAncestor (HandlWindow, 2);	
      HandlToolbar = GetDlgItem (HandlMT4, 0x63);
      ArIntTemp[0] = HandlToolbar;
      SendMessageA (HandlMT4, WM_COMMAND, 33020, ArIntTemp);
     }
   }
 }

Только для этой функции нужна системная библиотека user32.dll. Или заголовочный файл от неё.

Эта функция двигает кнопку включения (разрешения) экспертов.

 
Zhunko >>:

..Только для этой функции нужна системная библиотека user32.dll...

Уж прям сразу и тяжелую артиллерию подключать! Может автору достаточно ввести в код переменную, запрещающую торговлю, и все дела.

 
granit77 >>:

Уж прям сразу и тяжелую артиллерию подключать! Может автору достаточно ввести в код переменную, запрещающую торговлю, и все дела.

Деление на ноль :) .

 

мммм, а я хотел чтобы он деинициализивался, то есть совсем убирался, то есть вот прямо совсем)

например, нет лицензии к примеру - все, деициализация, удаление эксперта с графика и все такое

есть такие варианты?

 
Можно окно закрывать с экспертом. Это проще, чем искать, как его удалить. Хотя, удалить тоже можно...
 
#include <WinUser32.mqh>
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
void start() {
   int hwnd=WindowHandle (Symbol(), Period());
//----------------------
   hwnd=GetAncestor(hwnd,2);
   PostMessageA (hwnd,WM_COMMAND,33050,0);
   return;
}
//+------------------------------------------------------------------+
Заголовочный файл можно взять здесь, спасибо Zhunko, хороший сделал файл.
 
Zhunko >>:
Можно окно закрывать с экспертом. Это проще, чем искать, как его удалить. Хотя, удалить тоже можно...

Можно практически все... Но прежде, чем искать способ защиты, неплохо бы определится что защищать, и стоит ли овчинка выделки :))

 

Hallo,zhunko!

Function "expert ON-OFF" work not!

sorry

pansa

 
pansa:

Hallo,zhunko!

Function "expert ON-OFF" work not!

sorry

pansa

Zhunko 20.05.2009 11:29

Вот Ильнур, как-то помог:
Только для этой функции нужна системная библиотека user32.dll. Или заголовочный файл от неё.

Only needed for this function system library user32.dll. Or header file from it.

Talex 21.05.2009 11:36
#include <WinUser32.mqh>

Заголовочный файл можно взять здесь, спасибо Zhunko, хороший сделал файл.

The header file can be found here, thank you Zhunko, did a good file.

 

Hello,Zhunko!

That function kan not be compild!

You have no one sample were that function work!

very sorry!

pansa