Как изменить название окна терминала ?

 
Столкнулся с проблемой - тот ли терминал разворачиваю или не тот ( их уже два.. :) )

Так вот свернутый в панель - он показывает номер счета: и ... ( три точки).

Как можно сделать,чтоб там было написано то, что мне нужно ?

Где-то я видел ( то ли в ини каком-то , то ли где-то), но потерял .. Подскажите пожалуйста
 
Если Вы общались немного с языками програмирования то я думаю отсюда все будет ясно

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 и откомпилировал бы сам. Во-первых сам бы разобрался что к чему, во-вторых безопасно (ну это конечно если Вы во-первых разобрались ;) ).
 
Чето я сразу не сообразил стандартными средствами сделать чтоб не мучаться с экзешником
вот скрипт который это делает тока надо в библиотеке 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 и так далее ..- как они-то выводят свои названия ?
 
А вы не думали что это название может быть внутри исполняемого кода без всякого там ини файла. По моему даже гдето на сайте сказано что при покупке ПО компания может закомпилировать логотип и название компании в терминал, что-то Вы совсем нехотите ничего сделать сами.

Вот готовый код скрипта бросить на график и все, что Вам еще надо.

#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).
Тогда можно ориентироваться в свёрнутых окнах по значку.
Например так:
 
Вот именно ! (Комбат сразу смекнул, .. что простые юзеры еще есть ! :) их не может не быть)

Короче, по порядку


-- Спасибо :

за скрипт

за иконки

Иконки - оказались - именно тем решением

которое - можно применить

Почему - потому что - первое, что видно в панели - это именно иконка.

Если скриптом - написать там - "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 найти окно только зная его класс?
 
Это делается через 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);
    //--- вот и главное окно терминала
   }
Причина обращения: