无法设置 MQL_DLLS_ALLOWED
Posted
技术标签:
【中文标题】无法设置 MQL_DLLS_ALLOWED【英文标题】:MQL_DLLS_ALLOWED cannot be set 【发布时间】:2019-10-17 16:32:20 【问题描述】:我想知道是否有任何方法可以使用外部程序或 dll 或任何东西来设置 ENUM_MQL_INFO_INTEGER
的属性 id 值。
我试过这个:
int OnInit()
//---
MQL_DLLS_ALLOWED = 1;
Print(MQLInfoInteger(MQL_DLLS_ALLOWED));
//---
return(INIT_SUCCEEDED);
报错:
'MQL_DLLS_ALLOWED' - l-value required TestingEnum.mq5 15 4
'1' - cannot convert enum TestingEnum.mq5 15 22
'=' - l-value required TestingEnum.mq5 15 21
请告诉我我能做什么。
【问题讨论】:
看起来更像是c++
,而不是c#
,而且绝对不是vb.net
,因为l-value
是c++
的一个术语。你确定语言标签吗?
@Renat 可能会,但谢谢。你能帮我实现我想要实现的目标吗?我会编辑。
请任何人帮助我。我被手工工作困住了。我一直在试验这些东西。为此,我需要允许 dll,然后由于我必须遵循的安全规范而禁止它。
在 MQL_DLLS_ALLOWED
文档页面 (mql5.com/en/docs/constants/environment_state/mql5_programm_info) 上提到的唯一用法是 MQLInfoInteger
函数,它不能改变它。所以我敢打赌MQL_DLLS_ALLOWED
权限不能以编程方式更改。看起来它只能在程序启动之前设置,这里mql5.com/en/docs/runtime/tradepermission在第二张截图上有一个复选框'允许 DLL 导入'
@Renat 我知道手动我可以做到。但我想要一个程序化的出路。请参阅我已更改程序 100 次,我需要设置和重置平台的 dll 权限。这就是我不想手动更改它的原因。你能想象每天手动完成 100 次会有多乏味吗?因此,如果可能的话,正在寻找一些解决方案,如果使用 MQL5 或不使用它。
【参考方案1】:
我无法直接帮助您解决您的问题,主要是因为 cmets 中讨论的原因。我相信您可以检查是否允许 DLL 的值,但您不能轻易启用/禁用它。也许有一种从命令行运行 MT 终端的方法,其中一些键允许或阻止 dll,因此您可以检查。但这意味着重新启动您的平台,我不确定这是否方便。
如果我是你,并且厌倦了多次启用/禁用 dll,我会引入客户端的全局变量,其值为 0 或 1(当然是双精度值)。然后,如果它为零,则不调用 dll,并且 ea 不会启动(如果您在 OnInit()
中检查),如果它是非零值,则 dll 工作。可以编写一个更改此 GV 的简单脚本并分配热键。在这种情况下,热键会阻止一切,并在需要时再次允许 dll。
如果您需要任何帮助 - 我将编辑我的代码并提供一些基本示例。
【讨论】:
您的建议和建议非常棒。但是让我与你分享。我需要更改ENUM_MQL_INFO_INTEGER
的值。而且里面有很多东西。允许 dll 就是其中之一。所以我想完美的解决方案将有助于我更改已声明的枚举类型变量的值。你能帮帮我吗?
ENUM_MQL_INFO_INTEGER is a classical enum, you cannot reassign enums of course. And MQL5 can only provide results of
MQLInfoInteger()` 没有办法像 MQLSetInteger() 或类似的函数。这就是我建议解决方法的原因以上是关于无法设置 MQL_DLLS_ALLOWED的主要内容,如果未能解决你的问题,请参考以下文章
OA系统无法打开PDF文件,设置加载项发现Office Document Cache Handler无法启用,怎么设置?