Если Вы общались немного с языками програмирования то я думаю отсюда все будет ясно
program Project1; uses windows; begin setwindowtext(findwindow('Metaquotes::Metatrader::4.00',nil),'My text'); end.
К сожалению, настолько глубоко - не общался :) .. ( не въехал, куда это вставлять - уж точно)
можно поподробней ?
можно поподробней ?
Это код программы написанный на Delphi. Если Вы установите Delphi то можно этот код откомпилировать и получите исполняемый файл *.exe. После того как Вы запустите эту получившуюся программу то один из запущенных терминалов(а точнее тот который был запущен позже) поменяет заголовок своего окна.
По этой ссылке я выложил уже откомпилированный http://fxfilecheng.narod.ru/wintext.rar
PS Никогда не качайте исполняемые файлы если Вы не знаете что там. Я б на Вашем месте попросил у друзей Delphi и откомпилировал бы сам. Во-первых сам бы разобрался что к чему, во-вторых безопасно (ну это конечно если Вы во-первых разобрались ;) ).
По этой ссылке я выложил уже откомпилированный http://fxfilecheng.narod.ru/wintext.rar
PS Никогда не качайте исполняемые файлы если Вы не знаете что там. Я б на Вашем месте попросил у друзей Delphi и откомпилировал бы сам. Во-первых сам бы разобрался что к чему, во-вторых безопасно (ну это конечно если Вы во-первых разобрались ;) ).
Чето я сразу не сообразил стандартными средствами сделать чтоб не мучаться с экзешником
вот скрипт который это делает тока надо в библиотеке WinUser32.mqh добавить строку куданибудь сюда
вот скрипт который это делает тока надо в библиотеке WinUser32.mqh добавить строку куданибудь сюда
..... //---- windows int GetForegroundWindow(); ......
А вот сам скрипт
#property copyright "Copyright © 2005, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" #include <WinUser32.mqh> #property show_inputs extern string Newname="My text"; int start() { int h=GetForegroundWindow(); while (true) {Sleep(500); SetWindowTextA(h,Newname); } return(0); }
Теперь то уж точно должны разобраться, тем более и куда "вставить" у Вас точно имеется :).
А как же окна от разных дилеров-то по -разному называются ? Разве не в .ini в каких-то эти названия окна прописываются ?
Вот там к примеру Al_Pari Metatrader, StrategybuilderFX4 и так далее ..- как они-то выводят свои названия ?
Вот там к примеру Al_Pari Metatrader, StrategybuilderFX4 и так далее ..- как они-то выводят свои названия ?
А вы не думали что это название может быть внутри исполняемого кода без всякого там ини файла. По моему даже гдето на сайте сказано что при покупке ПО компания может закомпилировать логотип и название компании в терминал, что-то Вы совсем нехотите ничего сделать сами.
Вот готовый код скрипта бросить на график и все, что Вам еще надо.
Вот готовый код скрипта бросить на график и все, что Вам еще надо.
#property copyright "Copyright © 2005, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" #import "user32.dll" int GetForegroundWindow(); int SetWindowTextA(int hWnd,string lpString); #property show_inputs extern string Newname="My text"; int start() {int h=GetForegroundWindow(); while (true) {Sleep(500); SetWindowTextA(h,Newname); } return(0); }
Как вариант простого юзера... :)
В папку терминала поместить или изменить свою иконку (файл terminal.ico).
Тогда можно ориентироваться в свёрнутых окнах по значку.
Например так:
В папку терминала поместить или изменить свою иконку (файл terminal.ico).
Тогда можно ориентироваться в свёрнутых окнах по значку.
Например так:
Вот именно ! (Комбат сразу смекнул, .. что простые юзеры еще есть ! :) их не может не быть)
Короче, по порядку
-- Спасибо :
за скрипт
за иконки
Иконки - оказались - именно тем решением
которое - можно применить
Почему - потому что - первое, что видно в панели - это именно иконка.
Если скриптом - написать там - "AlPari" - то на панели - будет видно - Alpari, но! - если окон ( в т.ч. и терминалов) открыто несколько - то останется (из надписи) - только Alp.., Al.. и т.д. (как видно и на рисунке Комбата) . А вот иконку - будет видно всегда (!) и всю.
Так что - побеждает вариант Комбата ( простота - залог удачи)
Теперь -"внутри исполняемого кода без всякого там ини файла"
Вот - не думали .. А пробовали - Заменяем терминал.exe (берем к примеру его из папки, из которой запустившись он дает окно с названием "№счета Metatrader") - и запущенный из папки StrategyBuilderFX 4, к примеру - он дает в названии - "№счета StrategyBuilderFX 4 Metatrader Демосчет - [USDJPY Daily]"
Из чего я сделал вывод - в исполняемом файле - только "Metatrader" (закомпилирован),
а вот StrategyBuilderFX 4 - он ( этот исполняемый файл) - где-то в папке считАл
Вот где ? - Я и хочу найти..
(чтоб прописать один раз - а не накладывать скрипт каждый.. раз)
Короче, по порядку
-- Спасибо :
за скрипт
за иконки
Иконки - оказались - именно тем решением
которое - можно применить
Почему - потому что - первое, что видно в панели - это именно иконка.
Если скриптом - написать там - "AlPari" - то на панели - будет видно - Alpari, но! - если окон ( в т.ч. и терминалов) открыто несколько - то останется (из надписи) - только Alp.., Al.. и т.д. (как видно и на рисунке Комбата) . А вот иконку - будет видно всегда (!) и всю.
Так что - побеждает вариант Комбата ( простота - залог удачи)
Теперь -"внутри исполняемого кода без всякого там ини файла"
Вот - не думали .. А пробовали - Заменяем терминал.exe (берем к примеру его из папки, из которой запустившись он дает окно с названием "№счета Metatrader") - и запущенный из папки StrategyBuilderFX 4, к примеру - он дает в названии - "№счета StrategyBuilderFX 4 Metatrader Демосчет - [USDJPY Daily]"
Из чего я сделал вывод - в исполняемом файле - только "Metatrader" (закомпилирован),
а вот StrategyBuilderFX 4 - он ( этот исполняемый файл) - где-то в папке считАл
Вот где ? - Я и хочу найти..
(чтоб прописать один раз - а не накладывать скрипт каждый.. раз)
Ну чтож, главное что Вы нашли то что Вам надо. Kombat проникся Вашей проблемой, а я Вашим вопросом, за это ему и лавры :)
PS На счет накладывания скрипта каждый раз, есть такое дело как конфигурационный файл там можно сделать чтоб скрипт накладывался при запуске терминала :) ну да ладно.
PSS В ходе обсуждения сабжа возник вопрос разработчикам. Если Вы заметили то в первом варианте на Delphi я ищу хендл окна терминала через функцию FindWindow там в качестве второго параметра у меня стоит nil, что я думал означает любую строку(в конкретном случае), а использовать эту функцию в MQL4 у меня не получилось потому что NULL пустая строка и скрипт выдавал постоянно хендл=0.
Так вот вопрос как можно в MQL4 используя функцию FindWindow найти окно только зная его класс?
PS На счет накладывания скрипта каждый раз, есть такое дело как конфигурационный файл там можно сделать чтоб скрипт накладывался при запуске терминала :) ну да ладно.
PSS В ходе обсуждения сабжа возник вопрос разработчикам. Если Вы заметили то в первом варианте на Delphi я ищу хендл окна терминала через функцию FindWindow там в качестве второго параметра у меня стоит nil, что я думал означает любую строку(в конкретном случае), а использовать эту функцию в MQL4 у меня не получилось потому что NULL пустая строка и скрипт выдавал постоянно хендл=0.
Так вот вопрос как можно в MQL4 используя функцию FindWindow найти окно только зная его класс?
Это делается через EnumWindows и проверку класса окна:
//+------------------------------------------------------------------+ //| Функции проверки окон | //+------------------------------------------------------------------+ BOOL CALLBACK MainEnumWindowsProc(HWND hwnd,LPARAM lParam) { char tmp[256]=""; //---- пропустим пустые или левые окна ::GetClassName(hwnd,tmp,sizeof(tmp)-1); if(strcmp(tmp,"MetaQuotes::MetaTrader::4.00")!=0) return(TRUE); //---- нашли окно МТ, можно в него что-то послать .... //---- return(FALSE); } //+------------------------------------------------------------------+ //| Поиск окна МТ | //+------------------------------------------------------------------+ ... //---- if(EnumWindows(MainEnumWindowsProc,-1)) { //--- нашли } //----
А из MQL4 можно найти окно терминала очень просто.
#import "user32.dll" int GetParent(int hWnd); .... int handle=WindowHandle(Symbol(),Period()); if(handle!=0) { handle=GetParent(handle); //--- вот и главное окно терминала }

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Так вот свернутый в панель - он показывает номер счета: и ... ( три точки).
Как можно сделать,чтоб там было написано то, что мне нужно ?
Где-то я видел ( то ли в ини каком-то , то ли где-то), но потерял .. Подскажите пожалуйста