Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Так и не удалось пока библиотеку user32.lib подцепить к МТ4 !
Не может МТ4 загрузить данную библиотеку.
#import "user32.lib"
int SetWindowLong (int,int,int);
#import
В user32.lib функции SetWindowLong нет.
В ней найдены только функции: SetWindowLongA и SetWindowLongW.
Но, для их применения: требуется рабочий пример !
В user32.lib функции SetWindowLong нет.
В ней найдены только функции: SetWindowLongA и SetWindowLongW.
Но, для их применения: требуется рабочий пример !
SetWindowLong() - это не функция. Это макрос.
Мне от этого не легче (как он называется) !
Суть в том, что пока я не понял, как его применить на практике, он(а) для меня тёмная лошадка !
ПС:
Может когда-то и дождусь помощи в практическом его применении, но пока видимо время не пришло ...
Это к тому, что SetWindowLong() в библиотеке нет. Она есть только в заголовочном файле.
Надо дескриптор окна МТ4 искать от окна графика, а не от рабочего стола.
Есть такая библиотека. Там есть функция, которая возвращает дескриптор окна МТ4.
Если хотите, допишу туда функцию, которая меняет стиль окна.
Это к тому, что SetWindowLong() в библиотеке нет. Она есть только в заголовочном файле.
Надо дескриптор окна МТ4 искать от окна графика, а не от рабочего стола.
Есть такая библиотека. Там есть функция, которая возвращает дескриптор окна МТ4.
Если хотите, допишу туда функцию, которая меняет стиль окна.
Ну а чем не понравился мой метод нахождения дескриптора ?
Ведь дескриптор головного окна МТ4 он находит и печатает правильно !!!
Другое дело, как после того, как дескриптор найден, изменить стиль окна ?
Если терминалов много, то получите первый попавшийся. И не обязательно это будет Ваш.
Но, так дольше !
Хотя всего на один шаг ...
string s = "MetaQuotes::MetaTrader::4.00"; // название класса окна МТ4 string c; // заголовок окна MT4 #import "user32.dll" int GetDesktopWindow (); int GetWindow (int, int); int FindWindowExA (int, int, string, string); int SetWindowLong (int,int,int); int GetParent (int hWnd); #import int start() { int Wnd = GetDesktopWindow(); // дескриптор Рабочего стола int temp = GetWindow (Wnd, 5); // переходим в дочерние окна int h = FindWindow(temp, s, c); // поиск дескриптора окна МТ4 Print ("Дескриптор МТ4: ",DecToHex(h,8)); int hg = WindowHandle(Symbol(),0); Print ("Дескриптор графика: ",DecToHex(hg,8)); int phg = GetParent(hg); Print ("Дескриптор родителя: ",DecToHex(phg,8)); int dhg = GetParent(phg); Print ("Дескриптор деда: ",DecToHex(dhg,8)); int h1 = GetParent(dhg); Print ("Дескриптор МТ: ",DecToHex(h1,8)); //SetWindowLong (h,-16,0); return(0); } int FindWindow(int hw, string class, string caption) { int h = FindWindowExA (0,hw,class,caption); return (h); } string DecToHex (int n, int dig) { string s[], r=""; string Sym[16] = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"}; ArrayResize (s,dig); for (int i=0; i<dig; i++) s[i]="0"; i = dig-1; while (n != 0) { s[i] = Sym[n%16]; n = n>>4; i--; } for (i=0; i<dig; i++) r=r+s[i]; return (r); }
int Style; Style = GetWindowLongA(hWnd,GWL_STYLE); Style=Style || WS_CAPTION; Style=Style || WS_SYSMENU; SetWindowLongA(hWnd, GWL_STYLE, Style);
Есть ещё идея (частично в эту тему). Восстанавливать работу терминала, если его работа была завершена по каким-либо причинам. Самый простейший пример - в прикреплённом файле. Каждые 10 секунд программа ищет в списке запущенных процессов процесс терминала, если не находит, то запускает его.
Попытка "убить" терминал при работе такой программы приведёт к его запуску в течение 10-15 секунд.