Эмуляция кнопок ALT+R - страница 2

 
Koldun Zloy #:

Держите:

Привет, добрый колдун! Ваш код для МТ5. Но с МТ5 проблема эмуляции нажатия на клавиши ALT+R уже решена выше в сущности одной (последней) строкой

#import "user32.dll"
   int      SendMessageA(int hWnd,int Msg,int wParam,int lParam);
   int      GetAncestor(int hWnd,int gaFlags); 
#import

#define     WM_COMMAND              0x111

int hWmc = (int)ChartGetInteger(0,CHART_WINDOW_HANDLE);                      // handle текущего окна
int hWmt = GetAncestor(hWmc,2);                                              // handle платформы MT4/MT5

SendMessageA(hWmt,WM_COMMAND,33527,0);                                       // расположение мозаикой 33527

Но ни Ваш код, ни приведённый мной код в MT4 НЕ РАБОТАЕТ. 3-й параметр 33527 SendMessageA в МТ5 работает, а в МТ4 не работает. Перепробовал на всякий случай в МТ4 также SendMessageW, PostMessageA и SendMessageW. Тщетно. Мне нужен рабочий код для МТ4. Спасибо за участие.

 
foxmag #:

Вы могли бы рассказать, как с помощью spy++ находить значение 3-го параметра SendMessageW. Помогите, пожалуйста.

38259

 
foxmag #:

Привет, добрый колдун! Ваш код для МТ5. Но с МТ5 проблема эмуляции нажатия на клавиши ALT+R уже решена выше в сущности одной (последней) строкой

Но ни Ваш код, ни приведённый мной код в MT4 НЕ РАБОТАЕТ. 3-й параметр 33527 SendMessageA в МТ5 работает, а в МТ4 не работает. Перепробовал на всякий случай в МТ4 также SendMessageW, PostMessageA и SendMessageW. Тщетно. Мне нужен рабочий код для МТ4. Спасибо за участие.

В MT4 нужно убрать первую строку и pack( sizeof( PVOID ) ).

 
fxsaber #:

SysListView32 с OWNERDATA есть в наличии?

Нет.

 
Aleksandr Slavskii #:

38259

Потрясающе!  38259 для MT4 работает. Ниже полный рабочий код эмуляции нажатия на клавиши ALT+R для МТ4:

#import "user32.dll"
   int      SendMessageA(int hWnd,int Msg,int wParam,int lParam);
   int      GetAncestor(int hWnd,int gaFlags); 
#import

#define     WM_COMMAND              0x111

int hWmc = (int)ChartGetInteger(0,CHART_WINDOW_HANDLE);                      // handle текущего окна
int hWmt = GetAncestor(hWmc,2);                                              // handle платформы MT4/MT5

SendMessageA(hWmt,WM_COMMAND,38259,0);                                       // расположение мозаикой: MT5 33527 | MT4 38259

Спасибо, Александр! Тепа исчерпана с позитивным исходом. Всем спасибо.

 
foxmag #:

Потрясающе!  38259 для MT4 работает. Ниже полный рабочий код эмуляции нажатия на клавиши ALT+R для МТ4:

Спасибо, Александр! Тепа исчерпана с позитивным исходом. Всем спасибо.

Это не эмуляция нажатия клавиш, это просто отправка команды.

Код эмуляции нажатия клавиш предоставил Koldun Zloy

 
Aleksandr Slavskii #:

Это не эмуляция нажатия клавиш, это просто отправка команды.

Код эмуляции нажатия клавиш предоставил Koldun Zloy

Вряд ли Вы правы. Читаем Википедию https://ru.wikipedia.org/wiki/%D0%AD%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F

Эмуля́ция (англ. emulation) в вычислительной технике — комплекс программных, аппаратных средств или их сочетание, предназначенное для копирования (или эмулирования) функций одной вычислительной системы (гостя) на другую, отличную от первой, вычислительную систему (хост) таким образом, чтобы эмулированное поведение как можно ближе соответствовало поведению оригинальной системы (гостя).


Здесь важен смысл: подмена одних процедур другими, которые приводят к одинаковому или близкому результату, что и первые. Так что понятие эмуляции применимо и к тому, и к другому коду.