Нужна помощь - Код - Количество баров через Handle

 

Пожалуйста подскажите: 

Как узнать количество баров на чарте от которого есть  WindowHandle?

 
mirror-bd:

Пожалуйста подскажите:

Как узнать количество баров на чарте от которого есть WindowHandle?

а причем тут WindowHandle?
 
vasya_vasya:
а причем тут WindowHandle?
Скрипт запущен в окне №1, он выполняет действия над окном №2, (при этом Окно №2 постоянно переоткрывается с новым символом и периодом, которые неполучается определить). От окна № 2 есть хандл, и нужно узнать количество баров в окне №2.
 
int iBars( string symbol, int timeframe) 
не подходит?
 
mirror-bd:

Пожалуйста подскажите:

Как узнать количество баров на чарте от которого есть WindowHandle?


Воспользуйтесь GetWindowTextA (WinAPI), которая копиpует в принимающий буфер заголовок окна. Заголовок распарсите и узнаете символ и период, а потом и iBars(symbol,period);
 

В окно 1 индикатор, который пишет в глобальную переменную количество баров, если, конечно, идёт речь о количестве видимых баров.

В окне 2 скрипт читает глобальную переменную.

А, вообще, это: 

sanyooooook 13.06.2010 05:23

int iBars( string symbol, int timeframe)

 не подходит?

 
mirror-bd:

Пожалуйста подскажите:

Как узнать количество баров на чарте от которого есть WindowHandle?

Чем
int WindowBarsPerChart() Функция возвращает количество баров, помещающихся в окно текущего графика.
не устраивает ?
 
Urain:
Чем
int WindowBarsPerChart() Функция возвращает количество баров, помещающихся в окно текущего графика.
не устраивает ?

Так ему надо не в текущем графике. В посте выше написал.
 
#import "user32.dll"
  int GetAncestor(int hWnd, int gaFlags);
  int GetDlgItem(int hDlg, int nIDDlgItem);
  int SendMessageA(int hWnd, int Msg, int wParam, int lParam);
  int GetWindowTextA(int hWnd, string lpString, int nMaxCount);
  int GetWindowTextLengthA(int hWnd);
#import



string GetNameActiveChart(){
   int hTerminalWnd, hMDIClientWnd, hMDIActiveWnd, nMaxCount;
   string sActiveChartName = "                             ";
   hTerminalWnd = GetAncestor(WindowHandle(Symbol(), Period()), 2);
   hMDIClientWnd = GetDlgItem(hTerminalWnd, 0xE900);
   hMDIActiveWnd = SendMessageA(hMDIClientWnd, 0x0229, 0, 0);
   nMaxCount = GetWindowTextLengthA(hMDIActiveWnd);
   GetWindowTextA(hMDIActiveWnd, sActiveChartName, nMaxCount+1);
   return(sActiveChartName);
}
Функция возвращает символ, таймфрейм активного графика.
Причина обращения: