Как индикатору узнать является ли его окно развернутым?

 

Привет всем!!!

Как индикатору узнать является ли окно инструмента, в котором он открыт, активным (если окон инструментов открыто несколько в терминале)

а также можно ли узнать развернуто окно на весь экран или нет?

 
dimonsky >>:

Привет всем!!!

Как индикатору узнать является ли окно инструмента, в котором он открыт, активным (если окон инструментов открыто несколько в терминале)

а также можно ли узнать развернуто окно на весь экран или нет?


А для чего это нужно?

 

вообще узнать смотрят в данный момент на окно или нет.

Открыто несколько разных окон индюк в каждом из них, он довольно много ресурсов ест.

В тех окнах которые не видны можно тики игнорировать - не обсчитывать.

 
#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);
#import



bool fIsWindowActive(){
   int tWH=WindowHandle(Symbol(),Period());
   int tTWnd=GetAncestor(tWH,2);
   int hMDICWnd=GetDlgItem(tTWnd,0xE900);
   int hMDIAWnd=SendMessageA(hMDICWnd,0x0229,0,0);
   int tWH2=GetDlgItem(hMDIAWnd, 0xE900);
   return(tWH==tWH2);
}
 
Integer >>:

Спасибо огроменное!!!

 
Integer >>:

Опиши хоть чуть чуть, а то те кто не в теме не поймут. А кому-то возможно данный пример поможет что-то сделать.

 

Копи-паст, вроде все ясно.

Первую часть кода ставишь вверху скрипта. 

Вторая часть кода - это функция. Дописываешь ее в конец скрипта, например.

Ее просто вызываешь из своего кода для проверки - является ли текущее окно активным или нет.

А что за цифровые коды там - ну это RTFM наверное :) и опыт Integer'a

 
dimonsky >>:

Копи-паст, вроде все ясно.

Первую часть кода ставишь вверху скрипта.

Вторая часть кода - это функция. Дописываешь ее в конец скрипта, например.

Ее просто вызываешь из своего кода для проверки - является ли текущее окно активным или нет.

А что за цифровые коды там - ну это RTFM наверное :) и опыт Integer'a

Integer, вот тебе первый пример. Тут явно не в теме.

 
HIDDEN писал(а) >>

Integer, вот тебе первый пример. Тут явно не в теме.

Отчасти да, это не мой опыт, а опыт Ильнура, я просто его функцию по получению заголовка активного окна переделал. Все остальное правильно: первую часть кода - вверх скрипта, вторую вниз.

 

Тут я тоже не в теме, но проблема "тяжелых" индикаторов давно назрела. Пока решил примерно так:

extern int Vcnt=55;
//----
datetime _N_Time = 0;
int cnt=0;



int start()
{
cnt--;
if( _N_Time != Time[0] || cnt<0)  //индикатор считаю с приходом новой свечи или при обнулении счетчика тиков
  {
   cnt=Vcnt;
   .
   .
   .
   _N_Time = Time[0];
  }
 
:)
Причина обращения: