お世話になります。.NET C# 2005のWindowsフォームアプリケーションにて開発しており
ます。
外部メディア(SD、CF)から画像ファイルを読み込んで表示させる
アプリなのですがメディアを読み込んでいる際にメディアを抜くと
OSのエラーダイアログで「ドライブにディスクがありません」と
表示されてしまいます。
このダイアログを出ないようにしたいのですが何か方法はあります
でしょうか?
例外処理Try Catchを入れても出来ませんでした・・・。
どなたか有力な情報や良い案があればご教授宜しくお願いします。
レジストリのHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\
Control\Windows配下にあるDWORD値「ErrorMode」を「2」とす
ると表示されなくなるのですがこれだとはすべてのエラーメッ
セージを非表示にしてしまうため効率的な方法とはいえません。
プログラムで簡単に解決できればいいのですが・・・。
SetErrorMode でどうでしょうか。
.NET でしたね。
.NET Framework には相当する機能はないと思うので、P/Invoke で SetErrorMode を使う
ことになるでしょう。
>シャノンさん
さっそくのアドバイスありがとうございます。いろいろなサイトを見て
SetErrorModeで出来そうなのですが使用方法が調べたのですがいまいち
分かりません。SetErrorModeをアプリのどの辺で使用すればいいのでし
ょうか?初心者ですみませんがご教授ください。
MSDN読んで調べてみました。
[DllImport(kernel32.dll)]を定義してWin32 APIを呼び出して
long Flg;
Flg=SetErrorMode(0); //戻り値は、以前の設定
SetErrorMode(SEM_FAILCRITICALERRORS);
メディアからの読み込み処理・・・
SetErrorMode(before)
こんな感じで合っていますでしょうか?
実際に動かしたいのですが今環境がないです(><)
[DllImport(kernel32.dll)]
static extern ErrorModes SetErrorMode( ErrorModes uMode );
Const SEM_FAILCRITICALERRORS=&H1
Const SEM_NOGPFAULTERRORBOX=&H2
Const SEM_NOOPENFILEERRORBOX=&H8000
この部分を.NETではどう宣言したらよいのでしょうか?
いろいろと試行錯誤した結果
SetErrorMode API
を使用して意図したことが出来ました!
シャノンさんアドバイスありがとうございました。