Есть ли какая то возможность передать в dll callback функцию?
Что то вроде:
коротко: НЕТ
в ран-тайме у слишком многих функций не будет адреса. При агрессивной оптимизации они инлайнятся.
Ну да, есть такой момент))) Как вариант, можно с нею так поступить:
void __CallBack(){ static bool firstCall=true; if(firstCall){ firstCall=false; return; } //TODO } typedef void(*TCallBack)(void); long GetPtr(TCallBack callBack){ DLLFoo_DetectPtr(); callBack(); return DLLFoo_GetPtr(); } void OnStart() { TCallBack CallBack =__CallBack; long ptrCallBack=GetPtr(CallBack); //TODO }
Тут у компилятора нет оснований инлайнить.
Возможно ли сюда подставить адрес MQL5-функции?
EnumPropsEx(hwndSubclass, WinPropProc, NULL);
Описанная WinAPI-функция вызывает нужное количество раз другую функцию по ее адресу. Надо, чтобы она вызывала MQL5-функцию. Это возможно?
В winuser.mqh данная WinAPI-функция имеет такую сигнатуру.
int EnumPropsExW(HANDLE wnd,PVOID enum_func,PVOID param);Выделенный входной параметр - long-адрес на функцию, который и нужно получить.
- Karl-Bridge-Microsoft
- learn.microsoft.com
Возможно ли сюда подставить адрес MQL5-функции?
Описанная WinAPI-функция вызывает нужное количество раз другую функцию по ее адресу. Надо, чтобы она вызывала MQL5-функцию. Это возможно?
Нет.
Единственный способ - писать свою DLL, в которой, описать этот коллбэк и подцепить через вызов WinAPI-функции.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Есть ли какая то возможность передать в dll callback функцию?
Что то вроде: