тут глючок небольшой имеется... железно зашито в dll имя окна метатрейдера :/
а если программа называется как-нибудь по-другому, то getactiveWndname ни чего не возвращает... и ни как не узнать :(
А что делать, всё таки, если платформа называется не Метатрейдер, а Телетрейдер? Библиотека dll к сож. не работает. ... не распознает. Посоветуете?
скопировать файл C:Program FilesMetaTrader 4profilesconfiguration.ini от "правильного" МТ в
C:Program FilesTeletrader 4profilesconfiguration.ini
задача состоит в том, чтобы игнорировать работу мыши в неактивных окнах инструментов..
первое что пришло на ум это сравнить Symbol() и название инструмента в титуле окна терминала, которое заключено в квадратные скобки..
однако извлечь этот текст так и не удалось..
пробовал так..
int hWindow = WindowHandle(Symbol(),Period()); // хендл активного инструмента
int hParent = GetAncestor(hWindow, 2); // хендл основного окна терминала
string s;
GetWindowTextA(hParent, s, GetWindowTextLengthA(hParent) );
Print(s);// пусто
хотя GetWindowTextLengthA(hParent) возвращает значение похожее на количество символов в титуле..
какие еще варианты ?
Кто или что должно игнорировать работу мыши?
спасибо за участие.. сам нашел..
Кстати, если открыто два одинаковых окна (например EURUSD,H1) - что, тогда в обих окнах мышь останется активной?
вполне возможно, что активность мыши можно сделать и в нескольких окнах..
#import "user32.dll" int GetParent(int h); int GetTopWindow(int h); #import bool isActive(){ int hCurrWindow = WindowHandle(Symbol(),Period()); //хедл текущего окна графика int hNextParent = GetParent(hCurrWindow); hNextParent = GetParent(hNextParent); //хендп родительского окно для всех графиков int hNextActiveWindow = GetTopWindow(hNextParent); hNextActiveWindow = GetTopWindow(hNextActiveWindow); //хедл текущего окна графика if (hCurrWindow==hNextActiveWindow) return(true); else return(false); }
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
задача состоит в том, чтобы игнорировать работу мыши в неактивных окнах инструментов..
первое что пришло на ум это сравнить Symbol() и название инструмента в титуле окна терминала, которое заключено в квадратные скобки..
однако извлечь этот текст так и не удалось..
пробовал так..
int hWindow = WindowHandle(Symbol(),Period()); // хендл активного инструмента
int hParent = GetAncestor(hWindow, 2); // хендл основного окна терминала
string s;
GetWindowTextA(hParent, s, GetWindowTextLengthA(hParent) );
Print(s);// пусто
хотя GetWindowTextLengthA(hParent) возвращает значение похожее на количество символов в титуле..
какие еще варианты ?