【MQL4&5】 ShellExcuteW-フォルダー、ファイル、URLを開く(LINE、Discordスクショ通知)
EAやインジケーターやスクリプトから特定のURLを開くコードを紹介します('ω')
MQLにはファイルを開いて表示するといった関数がありませんので、この操作はWindowsの関数であるSellExcuteWを使用します。
まずはそのShellExcuteWを使用するという指示をグローバル部分に記載。
#importを使うとファイルパスの指定が無い限りライブラリフォルダまたはWindowsのDLLから.ex4 .ex5 .dllを読み込みます。
#import "Shell32.dll"
int ShellExecuteW(
int hwnd,
string lpOperation,
string lpFile,
string lpParameters,
string lpDirectory,
int nShowCmd
);
#import
あとは開きたい場所を指定して実行します。
使用しているターミナルのフォルダを開く場合は以下のようになります。
EAから開ける場所はENUM_TERMINAL_INFO_STRINGを参照してください。あとはWebのURLも開けます。
string openURL = TerminalInfoString(TERMINAL_DATA_PATH);
ShellExecuteW(0, "open", openURL, "", "", 1);
■まとめ
スクリプトに以下のコードをまとめるとこうなります。
//+------------------------------------------------------------------+
//| FolderOpen.mq5 |
//| Copyright 2022, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link "https://www.mql5.com"
#property version "1.00"
#import "Shell32.dll"
int ShellExecuteW(
int hwnd,
string lpOperation,
string lpFile,
string lpParameters,
string lpDirectory,
int nShowCmd
);
#import
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
string openURL = TerminalInfoString(TERMINAL_DATA_PATH) + "\\MQL5\\Files\\";
ShellExecuteW(0, "open", openURL, "", "", 1);
}
//+------------------------------------------------------------------+
ShellExcuteWをつかってバッチファイルと開くことでMT4やMT5がウィンドウズのコマンドプロンプトに色んなことを入力して実行することができます。ターミナルが属しているフォルダ配下にしかアクセスできないといった壁を突破することができます。
バッチファイルの詳しい作成方法とかは調べたらでてきますが、今回は参考ファイルとしてLINEとDiscordにスクリーンショットを送るバッチファイルとそれを実行するスクリプトソースファイルをお付けしました。
興味ある方はどうぞ召し上がれ('ω')
ここから先は
0字
/
1ファイル
¥ 2,000
この記事が気に入ったらサポートをしてみませんか?