文章 "通过动态链接库(DLL)管理 MetaTrader 终端" 新评论 MetaQuotes 2016.01.05 08:12 新文章 通过动态链接库(DLL)管理 MetaTrader 终端已发布:这篇文章讲述了通过动态链接库(DLL)来管理MetaTrader的用户界面元件, 它使用的实例是对推送通知的传输设置做出修改. 库的代码以及例子脚本在文章的附件中.我们有一个包含四个以上传输地址的 MetaQuotes ID 列表. 我们知道, SendNotification函数只是使用"选项"窗口中"通知"页面设置的ID. 这样, 您使用MQL发推送通知到指定ID的时候, 每次不能发超过4个. 让我们尝试改掉这一点. 这个问题可以通过两种方法解决 – 我们可以从头开始开发一个通知传输函数, 或者修改终端的设置, 然后使用标准函数. 第一个选择是非常耗费时间的并且不具备通用性. 所以, 我选择的是第二个方法. 反过来, 终端设置的修改也有各种方法. 根据我的经验, 这可以通过用户界面或者通过替换处理内存中的数值来实现. 操作内存看起来更好一些, 因为这可以避免用户看到弹出的窗口. 但是, 如果出了一点轻微的错误, 它就可能打断整个终端的操作. 而通过用户界面做, 可能发生的最糟的事情就是某个窗口或者按钮消失不见. 在这篇文章中, 我们会尝试使用辅助的动态链接库(DLL), 通过用户界面来管理终端. 特别是我们将考虑修改设置. 和终端的互操作将使用通用的方法, 即使用窗口和相关组件. 对终端进程不会产生影响. 这种方法也可以用于解决其它问题. 1.3. 处理菜单 和其他组件类似, 获得菜单的父句柄(某个窗口)后, 就可以对之进行操作了. 然后, 我们应该找到对应菜单项和子菜单然后进行一个选择. 请注意: 根据图表窗口是否展开, 终端菜单项的数量会有所改变(参见图 2). 菜单项的枚举从0开始. 图 2. 菜单项数量的改变 如果菜单项的数量改变了, "工具(Tools)"菜单项的索引编号也会发生改变. 所以, 我们应该使用GetMenuItemCount(Hnd:HMenu) 函数取得菜单项的总数, 传入菜单的句柄.作者:Galina Bobro 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
新文章 通过动态链接库(DLL)管理 MetaTrader 终端已发布:
这篇文章讲述了通过动态链接库(DLL)来管理MetaTrader的用户界面元件, 它使用的实例是对推送通知的传输设置做出修改. 库的代码以及例子脚本在文章的附件中.
我们有一个包含四个以上传输地址的 MetaQuotes ID 列表. 我们知道, SendNotification函数只是使用"选项"窗口中"通知"页面设置的ID. 这样, 您使用MQL发推送通知到指定ID的时候, 每次不能发超过4个. 让我们尝试改掉这一点.
这个问题可以通过两种方法解决 – 我们可以从头开始开发一个通知传输函数, 或者修改终端的设置, 然后使用标准函数. 第一个选择是非常耗费时间的并且不具备通用性. 所以, 我选择的是第二个方法. 反过来, 终端设置的修改也有各种方法. 根据我的经验, 这可以通过用户界面或者通过替换处理内存中的数值来实现. 操作内存看起来更好一些, 因为这可以避免用户看到弹出的窗口. 但是, 如果出了一点轻微的错误, 它就可能打断整个终端的操作. 而通过用户界面做, 可能发生的最糟的事情就是某个窗口或者按钮消失不见.
在这篇文章中, 我们会尝试使用辅助的动态链接库(DLL), 通过用户界面来管理终端. 特别是我们将考虑修改设置. 和终端的互操作将使用通用的方法, 即使用窗口和相关组件. 对终端进程不会产生影响. 这种方法也可以用于解决其它问题.
1.3. 处理菜单
和其他组件类似, 获得菜单的父句柄(某个窗口)后, 就可以对之进行操作了. 然后, 我们应该找到对应菜单项和子菜单然后进行一个选择.
请注意: 根据图表窗口是否展开, 终端菜单项的数量会有所改变(参见图 2). 菜单项的枚举从0开始.
图 2. 菜单项数量的改变
如果菜单项的数量改变了, "工具(Tools)"菜单项的索引编号也会发生改变. 所以, 我们应该使用GetMenuItemCount(Hnd:HMenu) 函数取得菜单项的总数, 传入菜单的句柄.作者:Galina Bobro