Библиотеки: Keyboard

 

Keyboard:

Работа с данными клавиатуры

Keyboard

Автор: fxsaber

 
Также определяются состояния следующих клавиш.
KEYBOARD::IsAlt();
KEYBOARD::IsShiftLeft();
KEYBOARD::IsShiftRight();
KEYBOARD::IsControlLeft();
KEYBOARD::IsControlRight();
KEYBOARD::IsAltLeft();
KEYBOARD::IsAltRight();


ЗЫ. И координаты курсора на экране (без CHART_EVENT_MOUSE_MOVE-подписки).

KEYBOARD::MouseXY( int &X, int &Y );
 
fxsaber #:
Также определяются состояния следующих клавиш.


ЗЫ. И координаты курсора на экране (без CHART_EVENT_MOUSE_MOVE-подписки).

В тестере как со всем этим? 
 
Видимо это моя испорченность. Но ничего кроме как встраивания тайного кейлогера в эксперта в голову не приходит. В плане практики применения ))
 
Sergey Porphiryev #:
Видимо это моя испорченность. Но ничего кроме как встраивания тайного кейлогера в эксперта в голову не приходит. В плане практики применения ))
Для полуавтоматов не представляете применения? А для GUI? 
 
Artyom Trishkin #:
В тестере как со всем этим? 

Не работает, т.к. не используются DLL.


Работает определение выбранной раскладки клавиатуры на момент запуска Тестера.

#include <fxsaber\Keyboard\Keyboard.mqh> // https://www.mql5.com/ru/code/48393

void OnInit()
{
  Comment(EnumToString(KEYBOARD::Layout()));
}
 
fxsaber #:
Не работает

Жаль. Была бы большая полезность.

 
Sergey Porphiryev #:
Видимо это моя испорченность. Но ничего кроме как встраивания тайного кейлогера в эксперта в голову не приходит. В плане практики применения ))

Простой пример выгрузки советника при одновременном нажатии двух SHIFT.

#include <fxsaber\Keyboard\Keyboard.mqh> // https://www.mql5.com/ru/code/48393

void OnChartEvent( const int id, const long&, const double&, const string& )
{
  if ((id == CHARTEVENT_KEYDOWN) &&
      KEYBOARD::IsShiftLeft() && KEYBOARD::IsShiftRight())
    ExpertRemove();
}


Клавиатура может быть полезна в боевых советниках.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Как в MQL5 сделать возобновление работы советника после паузы?

fxsaber, 2023.11.11 16:18

Для контроля состояния всех советников терминала использую.

  1. Сбор по горячей клавише всей информации по запущенным советникам. В одном текстовом файле видишь сразу, что и как работает, а что - нет.
  2. По горячей клавише проход по всем советникам с проверкой, что работают штатно: нет деления на ноль, выхода за массив, какой-то советник при запуске терминала не запустился и т.д.
  3. Очень наглядные визуализации работы советников, о которых нет смысла здесь писать.


И в индикаторах.

Скриншот.

По клавише 'F' делается скриншот текущего места на чарте.


MarketScreener.

По клавише 'A' делаются скриншоты со всех символов текущего места на чарте.
История спреда разных брокеров - 2.
История спреда разных брокеров - 2.
  • 2023.01.31
  • www.mql5.com
Для оперативной оценки торговых условий на рынке требовалось улучшить ранее представленный индикатор спреда . Был выбран путь применения горячих клавиш для фиксации интересных мест. Скриншот. По
 
Работа советника только в англоязычной раскладке.
#include <fxsaber\Keyboard\Keyboard.mqh> // https://www.mql5.com/ru/code/48393

void OnTick()
{
  if (KEYBOARD::Language() != "English")
    MessageBox("Change your keyboard layout to English!");    
}
 
fxsaber #:
Работа советника только в англоязычной раскладке.

Четкое задание рабочей раскладки.

#include <fxsaber\Keyboard\Keyboard.mqh> // https://www.mql5.com/ru/code/48393

input ENUM_LANGUAGEID inLanguageID = RUS_Russian__Russia; // В какой раскладке работаем

void OnTick()
{
  if (KEYBOARD::Layout() != inLanguageID)
    MessageBox("Не работаю с этой (" + EnumToString(KEYBOARD::Layout()) + ") раскладкой клавиатуры!" +
               "\n\nПереключитесь на рабочую: " + EnumToString(inLanguageID));
}

 
Срабатывание по заданной комбинации клавиш.
#include <fxsaber\Keyboard\Keyboard.mqh> // https://www.mql5.com/ru/code/48393

input ENUM_KEYCODE inKeyCode = KEYCODE_KEY_A; // По какой клавише срабатывание

input group "Какие клавиши должны быть дополнительно нажаты/включены"
input ENUM_KEYSTATE inKeyStateEnable1 = KEYSTATE_NONE;
input ENUM_KEYSTATE inKeyStateEnable2 = KEYSTATE_NONE;
input ENUM_KEYSTATE inKeyStateEnable3 = KEYSTATE_NONE;

input group "Какие клавиши НЕ должны быть нажаты/включены"
input ENUM_KEYSTATE inKeyStateDisable1 = KEYSTATE_NONE;
input ENUM_KEYSTATE inKeyStateDisable2 = KEYSTATE_NONE;
input ENUM_KEYSTATE inKeyStateDisable3 = KEYSTATE_NONE;

void OnChartEvent( const int id, const long &lparam, const double&, const string& )
{
  if ((id == CHARTEVENT_KEYDOWN) &&
      (lparam == inKeyCode) &&
      KEYBOARD::KeysState(inKeyStateEnable1 | inKeyStateEnable2 | inKeyStateEnable3,
                          inKeyStateDisable1 | inKeyStateDisable2 | inKeyStateDisable3))
    MessageBox(KEYBOARD::Pressed(lparam));
}

Причина обращения: