Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Не можешь разобраться в коде? Статьи помогут!
DenisR
665
DenisR 2015.06.27 04:54 

Добрый день. Возникла необходимость использования функции SendInput из библиотеки user32.dll. Функция выглядит так (синтаксис С++):

UINT WINAPI SendInput(_In_ UINT  nInputs,  _In_ LPINPUT pInputs,  _In_ int  cbSize);

Второй параметр этой функции "LPINPUT pInputs" - массив структур. Здесь и здесь написано, как это выглядит на С++. Получается вроде как структура в структуре. Кто-нибудь может подсказать, как это реализовать в MQL4? Заранее благодарен.

Koldun Zloy
217
Koldun Zloy 2015.06.27 16:23  

Это очень просто:

#define INPUT_MOUSE     0
#define INPUT_KEYBOARD  1
#define INPUT_HARDWARE  2

struct HARDWAREINPUT
{
   uint   uMsg;
   ushort wParamL;
   ushort wParamH;
   
   uint   placeholder[4];
};

struct MOUSEINPUT
{
   int    dx;
   int    dy;
   uint   mouseData;
   uint   dwFlags;
   uint   time;
   uint   dwExtraInfo;
};

struct KEYBDINPUT
{
   ushort wVk;
   ushort wScan;
   uint   dwFlags;
   uint   time;
   uint   dwExtraInfo;
   
   uint   placeholder[2];
};

struct INPUT
{
   uint type;
   
   KEYBDINPUT ki;
};

#import "user32.dll"
   uint SendInput( uint nInputs, INPUT& pInputs[], int cbSize );
#import

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
   INPUT Inputs[10];
   
   for( int i = 0; i < 10; i++ ){
      Inputs[i].type = INPUT_KEYBOARD;
      Inputs[i].ki.wVk = 1;
      Inputs[i].ki.wScan = 2;
      Inputs[i].ki.dwFlags = 3;
      Inputs[i].ki.time = 4;
      Inputs[i].ki.dwExtraInfo = 0;
   }
   
   SendInput( 10, Inputs, sizeof( INPUT ) );
}
//+------------------------------------------------------------------+
DenisR
665
DenisR 2015.06.27 16:49  
Ko1dun:

Это очень просто:

 

Спасибо за подсказку.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий