Как программно нажать на кнопку Авто-торговля - страница 2

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
artemiusgreat
558
artemiusgreat  
Vladon:
хоть W хоть A - не работает кнопка. 

Хендл чарта наверное удобней получать так :

ChartGetInteger(0,CHART_WINDOW_HANDLE)

Отсылка сообщений возможно уже не актуальна, но у меня работает так :

#import "user32.dll"
    bool SendMessageW(uint hWnd, uint Msg, uint wParam, long lParam);
    long FindWindowW(string lpClassName, string lpWindowName);
#import

#define WM_COMMAND 0x0111

Потом в коде индикатора :

int OnCalculate(
    const int bars, 
    const int counted, 
    const datetime &time[], 
    const double &open[], 
    const double &high[], 
    const double &low[], 
    const double &close[], 
    const long &tickVolume[], 
    const long &volume[], 
    const int &spread[])
{
    int start = 0;
    uint wTester = FindWindowW(NULL, "Tester");

Print(SendMessageW(wTester, WM_COMMAND, 1, 1));

    return(bars);
}
Spiridonov Guramovicj
13
Spiridonov Guramovicj  
Vladislav Andruschenko:

Написал функцию, нашел код кнопки, но не нажимается и все тут :-)


Alexey Volchanskiy
27326
Alexey Volchanskiy  
Vladislav Andruschenko:
хоть W хоть A - не работает кнопка. 

И чего вы все паритесь, велосипеды изобртаете? Взяли dll из Autoit и нет хлопот.

Dmitri Custurov
1128
Dmitri Custurov  
#import "user32.dll"
int GetAncestor(int hWnd,int gaFlags);
int PostMessageA(int hWnd,int Msg,int wParam,int lParam);
#import

#define  PUSKSTOP   32851
#define  WM_COMMAND 0x0111
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
startdestroy(true);   
  }
//+------------------------------------------------------------------+
void startdestroy(bool fals=true)
  {
   long hChart=ChartGetInteger(0, CHART_WINDOW_HANDLE);
   int hMetaTrader=GetAncestor((int)hChart,2);
   if(fals==true)
     {
      if(!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))PostMessageA(hMetaTrader,WM_COMMAND,PUSKSTOP,0);  // пуск или остановка советника

     }
   if(fals==false)
     {
      if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))PostMessageA(hMetaTrader,WM_COMMAND,PUSKSTOP,0);  // пуск или остановка советника

     }

  }

У меня это для 5-ки работает

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий