这是我尝试过的脚本::
void OnStart()
{
int handle = LoadLibraryW("C:\\Users\\jaffer\\AppData\\Roaming\\MetaQuotes\\Terminal\\lbdgfdgskjdfgsk\\MQL5\\Libraries\\MtGuiController.dll");
if(handle>0)
{
Print("handle found: ", handle);
uchar p[];
StringToCharArray("ShowForm",p);
long proc = GetProcAddress(handle, p);
if(proc>0)
{
Print("Process Found: ", proc);
}
else
Print("Did not find process: ", GetLastError());
}
else
Print("Did not find library: ", GetLastError());
if(handle>0)
FreeLibrary(handle);
}
出现以下错误:
testingLibrary EURUSD,M1: handle found: 1639776256
testingLibrary EURUSD,M1: stack damaged, check DLL function call in 'testingLibrary.mq5' (22,19)
testingLibrary EURUSD,M1: uninit reason 0
我不明白为什么我无法从dll文件加载功能?
我没有使用WinAPI的丰富经验。这就是我尝试过的。
使用:
#import "MtGuiController.dll"
void ShowForm(string assembly_path, string form_name);
void HideForm(string assembly_path, string form_name);
void SendEvent(string el_name, int id, long lparam, double dparam, string sparam);
void GetEvent(int index, string &element_name, int &elemnet_id, long &element_lparam, double &element_dparam, string &element_sparam);
void Exit();
int EventsTotal();
#import
我能够加载功能,但是我使用winapi的唯一原因是,当删除EA或脚本时,dll无法释放。请让我知道我能做什么。我正在MQL4中尝试相同的方式。因此,答案可能是MQL4 / MQL5。
将dll复制到项目文件夹并使用以下代码加载:
HMODULE handle = LoadLibrary("MtGuiController.dll");
我推荐此代码。