MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1057

 
Alexey Viktorov:

確認したところ、変更可能です。しかし、この変更は端末のすべてのアラートを対象とするものです。また、各条件でPlaySound()を使いたい場合は、他の人の関数ではなく、自分で仕組みを理解して使うべきです。

PlaySound() はアラートとは無関係に動作する。

試してみたところ、AlertとPlaySound()の両方で2つの音が再生されました。

 
MakarFX:

ありがとうございます、うまくいきました。

しかし、イベントの分離の問題を解決することはできません

もう一回

端末の 設定で、アラート音を無効にする

MQLコードでは、PlaySound()を使ってサウンドを出力してからAlert()を呼び出すので、アラートによって異なるサウンドを得ることができます。

 
Igor Makanu:

再び

端末の 設定で、アラート音を無効にする

MQLコードでは、PlaySound()でサウンドを出力してからAlert()を呼び出すため、アラートによって異なるサウンドが出力されることになり、アラートに任意のサウンドを割り当ててMQLコードからプログラム的に変更することはできません

逆も然りで、最初にAlert()、次にPlaySound()を実行します。そうしないと、PlaySound()が再生を開始する時間さえなく、Alert()がそれを上書きしてしまいます。

 
Igor Makanu:

再び

端末の 設定で、アラートをミュートする


空の音を入れるということですが、設定でアラートをオフにすると、まったく動作しませんので

 
Alexey Viktorov:

逆も然りで、最初にAlert()、次にPlaySound()を実行します。そうしないと、PlaySound()が再生を開始する時間さえなく、Alert()がそれを殺してしまいます。

たぶん、確認していない。

PlaySound() についておかしな点があり、Alertとの間にSleep(150)を追加する必要があると思うのですが、大したことではありません

 
Igor Makanu:

たぶん、確認してない

PlaySound()は、アラートとの間にSleep(150)を入れる必要があるような気がするのですが、どうでしょう。

ありがとうございます。
 
Igor Makanu:

たぶん、確認してない

PlaySound()は少し厄介で、アラートとの間にSleep(150)を追加する必要があると思うのですが、大したことではありません。

PlaySound() に空の名前を指定すると、現在再生中のサウンドの再生が停止する。

 
MakarFX:

空音を入れるということですが、設定でアラートをオフにすると、まったく動作しませんので

コードを読むのに時間がかかりました。私は本当にコーダーではないのですが、そこにある関数のうち、冒頭の以下の点に注意してください。

extern bool UseSound = False; // サウンドを使用する

おそらく、値をTrueに変更する必要があり、すでにこの関数にサウンドをアタッチする必要があります。アラートと一緒に付けるのではなく、別個に付けてください。

コードの最後(先ほど書いたもの)に、次のようなものがあります。

void Signal(文字列st) {

if (UseAlert) Alert(st);

{ if (UseComment) Comment(st);

if (UseSendMail) SendMail(WindowExpertName(), st);

if (UseSendPush)SendNotification(st);

if (UsePrint) Print(st);

if (UseSound) PlaySound(sotFileName);

}


Signal関数で実行される変数と理解しています。そのため、このSignal関数のコードには、いくつかのイベントのオプションがあります。そして、それぞれのイベントに必要な価値(音)を付加する必要があります。


もし私が質問を完全に混同していたら、プログラマーに訂正してもらいましょう :)

 
Vitaliy Maznev:

コードを読むのに時間がかかりました。私は本当にコーダーではないのですが、そこにある関数のうち、冒頭の以下の部分に注目してください。


もし私が質問を完全に混同していたら、プログラマーに訂正してもらいましょう :)

イベントによって音を使い分けるというのが主な質問でした。UseSoundはPlaySound機能のみに 適用され、Alertの動作には影響しない

 
MakarFX:

質問のポイントは、イベントによって異なる音でAlertが作動することです。UseSoundはPlaySound機能のみを 参照し、Alertの動作には影響しません。

この場合、アラート機能とプレイサウンド機能は互換性があるわけですね。それとも私が勘違いしていたのでしょうか?もし、Alert関数内に変数が書けず、カスタムサウンドに興味がある場合は、必要なイベントごとにAlertをPlaysound((UseAlert)を(UseSound))に置き換えてください。そして、必要なものを的確に手に入れることができるのです。少なくとも、論理的には。