SendMessage(h_ButtonOK, BN_CLICKED, 0, 0); // BN_CLICK?
не?
SendMessage(h_ButtonOK, BN_CLICKED, 0, 0); // BN_CLICK?
не?
не...не канает...
А так че?
#include <WinUser32.mqh>
int iHandle=FindWindowExW(child,0,str,"Sell by Market");
SetFocus(iHandle);
SendMessageW(iHandle,WM_LBUTTONDOWN,0,0);
{
string str;
string closeOrdString="Position: "+"#"+(string)Ticket()+" "+Type()+" "+DoubleToString(Lot(),2)+" "+Symb()+" "+DoubleToString(Price(),_Digits);
int CloseWindow=FindWindowW(NULL,closeOrdString);
Print(CloseWindow, closeOrdString);
child=GetWindow(CloseWindow,5);
child=GetWindow(child,2);
child=GetWindow(child,2);
child=GetWindow(child,2);
child=GetWindow(child,2);
child=GetWindow(child,2);
SetFocus(child);
int iHandle=FindWindowExW(child,0,str,"Print");
// SetFocus(iHandle);
int CloseOrrder=GetWindow(iHandle,2);
CloseOrrder=GetWindow(CloseOrrder,2);
CloseOrrder=GetWindow(CloseOrrder,2);
SendMessageW(CloseOrrder,WM_LBUTTONDOWN,0,0);
SendMessageW(CloseOrrder,WM_LBUTTONUP,0,0);
Sleep(500);
int OkButton=FindWindowExW(child,0,str,"Ok");
SendMessageW(OkButton,WM_LBUTTONDOWN,0,0);
SendMessageW(OkButton,WM_LBUTTONUP,0,0);
Sleep(1000);
if(CountOrders(0)==0)
{
BuyVirtualStop=0;
BuyClosed=true;
BuyOpened=false;
}
}
{
string str;
string closeOrdString="Position: "+"#"+(string)Ticket()+" "+Type()+" "+DoubleToString(Lot(),2)+" "+Symb()+" "+DoubleToString(Price(),_Digits);
int CloseWindow=FindWindowW(NULL,closeOrdString);
Print(CloseWindow, closeOrdString);
child=GetWindow(CloseWindow,5);
child=GetWindow(child,2);
child=GetWindow(child,2);
child=GetWindow(child,2);
child=GetWindow(child,2);
child=GetWindow(child,2);
SetFocus(child);
int iHandle=FindWindowExW(child,0,str,"Print");
// SetFocus(iHandle);
int CloseOrrder=GetWindow(iHandle,2);
CloseOrrder=GetWindow(CloseOrrder,2);
CloseOrrder=GetWindow(CloseOrrder,2);
SendMessageW(CloseOrrder,WM_LBUTTONDOWN,0,0);
SendMessageW(CloseOrrder,WM_LBUTTONUP,0,0);
Sleep(500);
int OkButton=FindWindowExW(child,0,str,"Ok");
SendMessageW(OkButton,WM_LBUTTONDOWN,0,0);
SendMessageW(OkButton,WM_LBUTTONUP,0,0);
Sleep(1000);
if(CountOrders(0)==0)
{
BuyVirtualStop=0;
BuyClosed=true;
BuyOpened=false;
}
}
спасибо максим, посмотрю.
как я понял, вы вызываете Win32 API прямо в MQL программе....
никаких подводных камней не встретили еще ?
а я вот DLL долблю...
спасибо максим, посмотрю.
как я понял, вы вызываете Win32 API прямо в MQL программе....
никаких подводных камней не встретили еще ?
а я вот DLL долблю...
А там есть инклудник этот в стандартной поставке.. не помню где именно, давно делал, сейчас посмотрел нету у меня его сейчас, а был в другом терминале) где-то значит на форуме должен лежать здесь.. Да, прямо из mql, вроде не было проблем никаких, единственное что на впс, помню, он в упор не хотел мне искать окна когда я из него выходил, а когда был подключен к впс и окно было активно то все было нормально, ну это я наверное что-то не доделал. Сама кликалка по кнопкам терминала работала гуд, терминал сам по себе кликал :)
int FindWindowW(string lpClassName,string lpWindowName);
int FindWindowExW(int hwndParent,int hwndChildAfter,string lpszClass,string lpszWindow);
bool EnumWindows(int lpEnumFunc,int lParam);
bool EnumWindowsProc(int hwnd,int lParam);
int SetForegroundWindow(int hwnd);
#import
либо так
#include <WinUser32.mqh>
А там есть инклудник этот в стандартной поставке.. не помню где именно, давно делал, сейчас посмотрел нету у меня его сейчас, а был в другом терминале) где-то значит на форуме должен лежать здесь.. Да, прямо из mql, вроде не было проблем никаких, единственное что на впс, помню, он в упор не хотел мне искать окна когда я из него выходил, а когда был подключен к впс и окно было активно то все было нормально, ну это я наверное что-то не доделал. Сама кликалка по кнопкам терминала работала гуд.
int FindWindowW(string lpClassName,string lpWindowName);
int FindWindowExW(int hwndParent,int hwndChildAfter,string lpszClass,string lpszWindow);
bool EnumWindows(int lpEnumFunc,int lParam);
bool EnumWindowsProc(int hwnd,int lParam);
int SetForegroundWindow(int hwnd);
#import
либо так
#include <WinUser32.mqh>
вот спасибо, друг ! я собственно кликалку по кнопкам терминала и делаю !
значит DLL не буду городить...
вот спасибо, друг ! я собственно кликалку по кнопкам терминала и делаю !
значит DLL не буду городить...
Да не за что, он мне самому крови выпил со всеми этими окнами
спасибо максим, посмотрю.
как я понял, вы вызываете Win32 API прямо в MQL программе....
никаких подводных камней не встретили еще ?
а я вот DLL долблю...
из камней встречал, то что на VPS винапи и клики не работают(кнопки не жмутся, сообщения не отправляются). приходилось держать открытой консоль доступа к рабочему столу на vps
может не так отправлял.
в своё время перемещал указатель мыши в нужное положение и нажимал ЛКМ )
естественно, нужно что бы окно с кнопкой, которую нажимаем, была сверху, поэтому скорее всего такой способ не подойдёт.
Sleep(100);
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN,25000,35000, 0, 0);
Sleep(100);
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTUP,25000,35000, 0, 0);
Sleep(10);
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
имеется диалоговое окно, в окне кнопка
ОК, хочу нажать ее из программы, но, никак, хоть ты тресни...
в приведенном фрагменте h_ButtonOK - хэндл этой кнопки, проверял разными способами - дейсвительно кнопка ОК...
if (i_DlgCtrlID != 0)
{
SendMessage(GetParent(h_ButtonOK),WM_COMMAND,MAKEWPARAM(i_DlgCtrlID,BN_CLICKED),(LPARAM)h_ButtonOK);
return TRUE;
}