「システム異常の詳細」からMT4を自動復帰させる
Build 226 の MT4 を使っていると、下記ダイアログが出てくることが稀にあります。
これは、古いバージョンで作られた ex4 ファイルを新しいバージョンの MT4 で使用した場合に発生することが多いようです。その場合は、3箇所の mqlcache.dat をすべて削除して MT4 を再起動する..(=mq4ファイルがすべてリコンパイルされる..)という解決策でOK なのですが、必ずしもこれが原因で発生するだけではありません。私も過去に1度遭遇したのですが、結局原因は不明でした。
このクラッシュを意図的に引き起こすのは簡単で、コメント欄で kartzさんが紹介されたような、DLLの不正呼び出しで再現できます。下の例では、引数が無い関数GetCurrentProcess()に int の引数をつけています。
#property show_inputs #import "kernel32.dll" int GetCurrentProcess(int); #import int start() { if(!IsDllsAllowed()){ Alert("Check Allow DLL imports"); return(0); } Sleep(5000); GetCurrentProcess(1); return(0); }
↑これを script として保存して実行すると、5秒後にクラッシュします。^^;
(EAの不正利用を検知しました。このMT4は自動的に停止します..。なんて目的で使わないように...orz
どうせなら、クラッシュ状態を検出して、MT4を再起動させたいよねっ?? と思って用意したのが、AutoHotKey による、MT4CrashReboot.exe です。リブートは不要で音だけ鳴らしたい人向けに MT4CrashAlert.ahk もあります。
このツールはあまり役に立たない方がシアワセのですが、、どうしても必要な人はこちらからどうぞ..。
※ここで公開していたバージョンではVPSで動作しないことが判明したので、
http://d.hatena.ne.jp/fai_fx/20100912 に追加記事を書きました。
※再起動ツールに頼らずに、クラッシュしないような環境を構築することが大切です。古いMT4を試して、どうしてもダメな時に使うべきです..。