OSのダイアログを出さない方法 – プログラミング – Home

OSのダイアログを出さない方法
 
通知
すべてクリア

[解決済] OSのダイアログを出さない方法


KEN
 KEN
(@KEN)
ゲスト
結合: 22年前
投稿: 77
Topic starter  

お世話になります。.NET C# 2005のWindowsフォームアプリケーションにて開発しており
ます。

外部メディア(SD、CF)から画像ファイルを読み込んで表示させる
アプリなのですがメディアを読み込んでいる際にメディアを抜くと
OSのエラーダイアログで「ドライブにディスクがありません」と
表示されてしまいます。

このダイアログを出ないようにしたいのですが何か方法はあります
でしょうか?

例外処理Try Catchを入れても出来ませんでした・・・。

どなたか有力な情報や良い案があればご教授宜しくお願いします。


引用未解決
トピックタグ
KEN
 KEN
(@KEN)
ゲスト
結合: 22年前
投稿: 77
Topic starter  

レジストリのHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\
Control\Windows配下にあるDWORD値「ErrorMode」を「2」とす
ると表示されなくなるのですがこれだとはすべてのエラーメッ
セージを非表示にしてしまうため効率的な方法とはいえません。

プログラムで簡単に解決できればいいのですが・・・。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

SetErrorMode でどうでしょうか。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

.NET でしたね。
.NET Framework には相当する機能はないと思うので、P/Invoke で SetErrorMode を使う
ことになるでしょう。


返信引用
KEN
 KEN
(@KEN)
ゲスト
結合: 22年前
投稿: 77
Topic starter  

>シャノンさん

さっそくのアドバイスありがとうございます。いろいろなサイトを見て
SetErrorModeで出来そうなのですが使用方法が調べたのですがいまいち
分かりません。SetErrorModeをアプリのどの辺で使用すればいいのでし
ょうか?初心者ですみませんがご教授ください。


返信引用
KEN
 KEN
(@KEN)
ゲスト
結合: 22年前
投稿: 77
Topic starter  

MSDN読んで調べてみました。

[DllImport(kernel32.dll)]を定義してWin32 APIを呼び出して

long Flg;

Flg=SetErrorMode(0); //戻り値は、以前の設定

SetErrorMode(SEM_FAILCRITICALERRORS);

メディアからの読み込み処理・・・

SetErrorMode(before)

こんな感じで合っていますでしょうか?

実際に動かしたいのですが今環境がないです(><)


返信引用
KEN
 KEN
(@KEN)
ゲスト
結合: 22年前
投稿: 77
Topic starter  

[DllImport(kernel32.dll)]
static extern ErrorModes SetErrorMode( ErrorModes uMode );


返信引用
KEN
 KEN
(@KEN)
ゲスト
結合: 22年前
投稿: 77
Topic starter  

Const SEM_FAILCRITICALERRORS=&H1
Const SEM_NOGPFAULTERRORBOX=&H2
Const SEM_NOOPENFILEERRORBOX=&H8000

この部分を.NETではどう宣言したらよいのでしょうか?


返信引用
KEN
 KEN
(@KEN)
ゲスト
結合: 22年前
投稿: 77
Topic starter  

いろいろと試行錯誤した結果

SetErrorMode API

を使用して意図したことが出来ました!

シャノンさんアドバイスありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました