Запуск скрипта через WinApi

 

Добрый день.

Как запустить скрипт? Поиском пользовался, соорудил такую конструкцию (терминал x32):

#property strict


#import "user32.dll"
  int RegisterWindowMessageW(string lpstring);
  int SendMessageA(int hWnd, int Msg, int wParam, string lParam);
#import


void OnStart()
{
    int hwnd = WindowHandle(Symbol(), Period()); 
    int MT4InternalMsg = RegisterWindowMessageW("MetaTrader4_Internal_Message"); 
    SendMessageA(hwnd, MT4InternalMsg, 16, "name");   
}

Не работает. Из-за 64х битных терминалов схему отменили?

P.S: char также пробовал.

 
Pavlick:

Добрый день.

Как запустить скрипт? Поиском пользовался, соорудил такую конструкцию (терминал x32):

Не работает. Из-за 64х битных терминалов схему отменили?


Из-за уникода наверно. При импорте функций замените string на массивы uchar по ссылке. Перед вызовом функции сторку преобразовывать в массив функцией StringToCharArray().
 
Я же подписал - с char пробовал.
 
Pavlick:
Я же подписал - с char пробовал.
А я где-то писал про char?
 
SendMessageW
 
Вот здесь уже обсуждалось (https://www.mql5.com/ru/forum/151863). Из DLL - вызывается. Из MQL4 - не получается. Хотя, возможно, просто не докопал в эту сторону, т. к. достаточно было вызова скрипта из DLL.
 
Scriptong:
Вот здесь уже обсуждалось (https://www.mql5.com/ru/forum/151863). Из DLL - вызывается. Из MQL4 - не получается. Хотя, возможно, просто не докопал в эту сторону, т. к. достаточно было вызова скрипта из DLL.

Все получается.
 
Integer:

Все получается.

Пример с запуском не покажите?
TheXpert:

По идеи без разницы, SendMessage не принимает строк (не знает об этом). Но пытался и с W версией.
 
Pavlick:

Пример с запуском не покажите?
По идеи без разницы, SendMessage не принимает строк (не знает об этом). Но пытался и с W версией.

См. личку.
 
Pavlick:

Пример с запуском не покажите?
По идеи без разницы, SendMessage не принимает строк (не знает об этом). Но пытался и с W версией.
Свой пример покажите. Все работает до сих пор. Только теперь надо учитывать путь к MQL-программе.
 
Zhunko:
Свой пример покажите. Все работает до сих пор. Только теперь надо учитывать путь к MQL-программе.

Не знаю как ещё пробовать:

#property strict


#import "user32.dll"
  int RegisterWindowMessageW(string lpstring);
  int SendMessageW(int hWnd, int Msg, int wParam, string lParam);
#import


void OnStart()
{
    long next = ChartNext(0);
    int hwnd = (int)ChartGetInteger(next, CHART_WINDOW_HANDLE);
    int MT4InternalMsg = RegisterWindowMessageW("MetaTrader4_Internal_Message"); 
    SendMessageW(hwnd, MT4InternalMsg, 16, "C:\TDM\msys\1.0\home\Pavel\FXOpen\MQL4\Scripts\fibo.ex4");
    //SendMessageW(hwnd, MT4InternalMsg, 16, "C:\TDM\msys\1.0\home\Pavel\FXOpen\MQL4\Scripts\fibo");
    //SendMessageW(hwnd, MT4InternalMsg, 16, "FXOpen\MQL4\Scripts\fibo.ex4");
    //SendMessageW(hwnd, MT4InternalMsg, 16, "FXOpen\MQL4\Scripts\fibo");
    //SendMessageW(hwnd, MT4InternalMsg, 16, "MQL4\Scripts\fibo.ex4");
    //SendMessageW(hwnd, MT4InternalMsg, 16, "MQL4\Scripts\fibo");
    //SendMessageW(hwnd, MT4InternalMsg, 16, "Scripts\fibo.ex4");
    //SendMessageW(hwnd, MT4InternalMsg, 16, "Scripts\fibo");
    //SendMessageW(hwnd, MT4InternalMsg, 16, "fibo.ex4");
    SendMessageW(hwnd, MT4InternalMsg, 16, "fibo");     
}

У вас есть работающий вариант?

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