Скачать MetaTrader 5

Программно открыть "Новый ордер" (F9)

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Что происходит в MQL5.community? Раздел Стена ответит на этот вопрос!
Roman Starinskij
1870
Roman Starinskij 2014.10.29 07:31 

День добрый. Прошу подсказать, как программно вызвать открытия окна нового ордера (горячая клавиша - F9)? Это делеается через user34.dll? Каую функцию использовать, каой код клавиши F9?

Где можно почитать про работу с WinApi функцией?

Спасибо. 

Sergey Dzyublik
4817
Sergey Dzyublik 2014.10.29 09:39  

Вот файл - почитайте его внимательно там много интересного. (Об WinApi поищите темы на 4-ке  как https://www.mql5.com/ru/forum/152533  и https://www.mql5.com/ru/forum/125202)

Не проверял но попробуйте:

int hwnd = int(ChartGetInteger(ChartID(), CHART_WINDOW_HANDLE));
PostMessageW(hwnd, WM_COMMAND, 33458, 0);
Файлы:
Roman Starinskij
1870
Roman Starinskij 2014.10.29 11:01  
ALXIMIKS:

Вот файл - почитайте его внимательно там много интересного. (Об WinApi поищите темы на 4-ке  как https://www.mql5.com/ru/forum/152533  и https://www.mql5.com/ru/forum/125202)

Не проверял но попробуйте:

Не срабатывает... Пробовал со стандартной библиотекой - тоже. Подскажи, как решить?
Sergey Dzyublik
4817
Sergey Dzyublik 2014.10.29 11:30  

да, проверил - не работает ни так, ни через родительский хендл.

Ну всегда есть путь через симуляцию нажатия клавиши F9

    keybd_event (VK_F9, 0x45, KEYEVENTF_EXTENDEDKEY|0, 0); 
    keybd_event (VK_F9, 0x45, KEYEVENTF_EXTENDEDKEY|KEYEVENTF_KEYUP, 0); 

 Но это будет срабатывать только если терминал - активное окно в момент нажатия.

Roman Starinskij
1870
Roman Starinskij 2014.10.29 12:53  
ALXIMIKS:

да, проверил - не работает ни так, ни через родительский хендл.

Ну всегда есть путь через симуляцию нажатия клавиши F9

 Но это будет срабатывать только если терминал - активное окно в момент нажатия.

Большое спасибо! Все заработало. :)

Где можно изучить работу с DLL`лами? 

Ihor Herasko
9046
Ihor Herasko 2014.10.29 14:18  
WePlexus:

Где можно изучить работу с DLL`лами? 

Наверное, имелось в виду - WinAPI? Если да, то это ресурс MSDN нужно изучать. Вот, к примеру, так описывается keybd_event - http://msdn.microsoft.com/en-us/library/windows/desktop/ms646304(v=vs.85).aspx.

keybd_event function (Windows)
  • msdn.microsoft.com
Synthesizes a keystroke. The system can use such a synthesized keystroke to generate a WM_KEYUP or WM_KEYDOWN message. The keyboard driver's interrupt handler calls the keybd_event function. Note This function has been superseded. Use SendInput instead. Syntax Parameters bVk [in] A virtual-key code. The code must be a value in the range 1...
Eugeniy Lugovoy
1979
Eugeniy Lugovoy 2014.10.29 17:53  
Да, в принципе можно торгового робота написать без использования MQL. Приложение на С/С++ да WinApi. Только придется еще изучить и внутренние сообщения терминала, но это мелочи.
Комбинатор
15922
Комбинатор 2014.10.29 22:06  
elugovoy:
Да, в принципе можно торгового робота написать без использования MQL. Приложение на С/С++ да WinApi. Только придется еще изучить и внутренние сообщения терминала, но это мелочи.
Можно, но это будет ненадежная неповоротливая монструозная хрень.
Eugeniy Lugovoy
1979
Eugeniy Lugovoy 2014.10.29 22:39  
TheXpert:
Можно, но это будет ненадежная неповоротливая монструозная хрень.

Ненадежная... возможно.

Монструозная (первый раз прочитал почему-то как мЕнструозная) это вряд ли, если не писать прямо на ассемблере. Модульная разработка и никаких монстров ))

Andrey Khatimlianskii
56177
Andrey Khatimlianskii 2014.10.30 04:03  
WePlexus:

День добрый. Прошу подсказать, как программно вызвать открытия окна нового ордера (горячая клавиша - F9)? Это делеается через user34.dll? Каую функцию использовать, каой код клавиши F9?

#import "user32.dll"
        int GetAncestor(int, int);
        int PostMessageW(int, int, int, int);
#import

void OnStart()
{
        int handle_mt = GetAncestor( WindowHandle(Symbol(),Period()), 2 );
        PostMessageW( handle_mt, WM_COMMAND, 35431, 0 );

Но там действительно огромное количество тонкостей.

Roman Starinskij
1870
Roman Starinskij 2014.11.03 19:35  
Всем всем спасибо! Механизм запущен, все работает!
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий