呪術廻戦の五条悟とヒロアカのホークスの声優が同じことを知って感動しているセレブパンダだお。
指定した時間にアラームを鳴らしたい話です。
こんな人が対象です。
- 30分や15時など指定した時間に好きなアラームを鳴らしたい人。
サンプル
まずコンパイルした際に、ex4にアラームが組み込まれる指定をします。
組み込まなくても実行することは可能ですが、ex4だけ配布したい場合に不便などで、今回はex4に含めちゃいます。
#resource "chime.wav"
#resourceコマンドを使います。これは、指定したパスのリソースをex4に含めるように、コンパイラに指示するコマンドです。
この場合、mq4と同じフォルダにchime.wavを用意してください。
アラームを鳴らすには、PlaySoundを使います。
PlaySound("::chime.wav");
決まった時間にアラームを出すので、タイマーイベントを使います。
int OnInit()
{
EventSetMillisecondTimer(500);
return(0);
}
OnInitイベントで、EventSetMillisecondTimerを使い、タイマーを有効にします。
今回は55分にアラームを鳴らすことをしたいので、OnTimerイベントで55分だったらという判定をします。
int OnTimer()
{
int min = TimeMinute(iTime(NULL, 1, 0));
if ( min == 55 ){
PlaySound("::chime.wav");
}
}
ただ、このままだと、55分の時にchime.wavが常になり続けてしまいます。
55分になったら1回だけchime.wavがなるように変更してみます。
int OnTimer()
{
int min = TimeMinute(iTime(NULL, 1, 0));
if ( min == 55 ){
static datetime s_dt = 0;
// 55分になった時、1回だけ処理する
if ( s_dt != iTime(NULL, 1, 0) ){
s_dt = iTime(NULL, 1, 0);
PlaySound("::chime.wav");
}
}
}
これで、55分になったら1回だけ、chime.wavがなります。
もう1つ、高度なことをすると、chime.wavの再生時間が30秒など長い場合に途中で止めたくなります。
13秒なりつづけたら、再生を止めることを追加します。
int OnTimer()
{
int min = TimeMinute(iTime(NULL, 1, 0));
if ( min == 55 ){
static datetime s_dt = 0;
// 55分になった時、1回だけ処理する
if ( s_dt != iTime(NULL, 1, 0) ){
s_dt = iTime(NULL, 1, 0);
PlaySound("::chime.wav");
}
if(TimeSeconds(TimeCurrent()) > 13){
PlaySound(NULL);
}
}
}
55分からchime.wavはなり始めます。
TimeSeconds(TimeCurrent())で現在の秒を取得し、13秒より大きい場合はPlaySoundのNULLを渡すことで、再生を止めることができます。
では、まただお。