99yenさんが、原因を特定してくれたので、これを組み込んで
エラーが出ないようにする。
[nadesiko-dev :447]より
~~~~~~~
エラーの発生条件がわかりました。フロッピーディスクドライブが存在してい
て、ディスクが入っていない場合に発生するようです。「ディスクサイズ」以外
にも「存在」や「起動」でも発生しました。
回避するには、Win32APIのSetErrorMode関数を使用し、致命的なエラーを抑制す
れば良いようです。
参考
http://oshiete.gogaku-ryugaku.net/qa260472.html
http://msdn.microsoft.com/ja-jp/library/cc428987.aspx
http://www.rinku.zaq.ne.jp/ultimate/tips/system/cor1.htm
//ここから
●SetErrorMode(uMode) =DLL("kernel32.dll","UINT SetErrorMode(UINT)")
// SetErrorModeの定数。SEM_FAILCRITICALERRORS = $1しか使いませんが…
!SEM_NORMAL = $0 // システム既定設定
!SEM_FAILCRITICALERRORS = $1 // 致命的エラーメッセージを非表示
!SEM_NOGPFAULTERRORBOX = $2 // 一般保護違反時のメッセージを非表示
!SEM_NOALIGNMENTFAULTEXCEPT = $4 // メモリ整列違反時のメッセージを非表示
!SEM_NOOPENFILEERRORBOX = $8000 // ファイルが存在しなかったときのメッ
セージを非表示
// SetErrorModeがないとエラーが発生する
// 致命的エラーメッセージを表示しない
SetErrorMode(SEM_FAILCRITICALERRORS)
「A:\」のディスクサイズを言う
「A:\」が存在を言う
SetErrorMode(SEM_NORMAL) // 元に戻す
//ここまで
~~~~~~~