C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
C# と VB.NET の入門サイト
Re[3]: MessageBoxを消す方法について
(過去ログ 37 を表示中)
掲示板トップ
C# と VB.NET 入門
新規作成
利用方法/規約
トピック表示
ランキング
記事検索
過去ログ
[トピック内 4 記事 (1 - 4 表示)] <<
0
>>
■19310
/ inTopicNo.1)
MessageBoxを消す方法について
▼
■
□投稿者/ あら
(56回)-(2008/05/22(Thu) 09:19:47)
分類:[C#]
Form1からMessageBoxを表示させ、特定のイベントが発生したら
表示させたMessageBoxを自動で消したいと思っています。
このようなことは可能なのでしょうか?
VS2005 .NET2.0
引用返信
編集キー/
編集
■19312
/ inTopicNo.2)
Re[1]: MessageBoxを消す方法について
▲
▼
■
□投稿者/ はつね
(724回)-(2008/05/22(Thu) 09:41:46)
■
No19310
(あら さん) に返信
> Form1からMessageBoxを表示させ、特定のイベントが発生したら
> 表示させたMessageBoxを自動で消したいと思っています。
MessageBoxはモーダル表示です。特定のイベントはどこで発生するのでしょうか。
別のEXEとかからでしょうか。
できるかどうか分かりませんが、MessageBoxのWHNDをとって[ENTER]キーのキーコー
ドを送りつける方法が考えられますが、やっつけ仕事的な印象があります。
ちゃんと、EXE間の通信方式を設計して、MessageBoxもそれらしいフォームを自作
して、EXE間の通信をそのMessageBoxもどきフォームで受け取って閉じるような
流れの方がいいと思います。
引用返信
編集キー/
編集
■19320
/ inTopicNo.3)
Re[2]: MessageBoxを消す方法について
▲
▼
■
□投稿者/ あら
(58回)-(2008/05/22(Thu) 10:36:47)
返信ありがとうございます。
> > MessageBoxはモーダル表示です。特定のイベントはどこで発生するのでしょうか。
> 別のEXEとかからでしょうか。
すみません。イベントは発生しませんでした。。。
特定のイベントとは、USBキー抜き差しで発生するイベントのことを想定して記載しました。
USBが抜かれるとMessageBoxを表示させて、再度USBを挿すとMessageBoxを消そうとしていま
した。
> ちゃんと、EXE間の通信方式を設計して、MessageBoxもそれらしいフォームを自作
> して、EXE間の通信をそのMessageBoxもどきフォームで受け取って閉じるような
> 流れの方がいいと思います。
こちらのほうで試してみたいと思います。
説明が不足していて申し訳ありませんでした。
ありがとうございます。
解決済み
引用返信
編集キー/
編集
■19348
/ inTopicNo.4)
Re[3]: MessageBoxを消す方法について
▲
▼
■
□投稿者/ とっちゃん
(298回)-(2008/05/22(Thu) 14:20:03)
■
No19320
(あら さん) に返信
> 特定のイベントとは、USBキー抜き差しで発生するイベントのことを想定して記載しました。
> USBが抜かれるとMessageBoxを表示させて、再度USBを挿すとMessageBoxを消そうとしていま
> した。
Win32のレベルではイベントがあります。.NET 側にはマップされていませんが。
WM_DEVICECHANGED メッセージ辺りから掘り下げていけば、いろいろ情報が発掘できるはずです。
ただし、USBの種類によってはいろいろやらないとだめとかOSによってとかがあるので
必ずしも検出できるとは言い切れませんが。
>>ちゃんと、EXE間の通信方式を設計して、MessageBoxもそれらしいフォームを自作
>>して、EXE間の通信をそのMessageBoxもどきフォームで受け取って閉じるような
>>流れの方がいいと思います。
> こちらのほうで試してみたいと思います。
>
> 説明が不足していて申し訳ありませんでした。
>
> ありがとうございます。
>
>
こちらもついでに、
同一スレッド上(今回の例であれば、WM_DEVICECHANGEメッセージをハンドリングしたところ)で
モーダルウィンドウを探してきて(メッセージボックスは特殊なモーダルダイアログとして
探すことは可能)、そのウィンドウにWM_CLOSEを投げることでウィンドウを閉じることができます。
(まれに閉じさせない場合もありますが、メッセージボックスがどっちになってるかは不明)。
その代わり、メッセージボックスを出す部分では、OKなら続行とかその辺きっちりやっておかないと
ぐだぐだになります。
なので、ちゃんとやるのであれば、メッセージボックスは使わずに自前のダイアログを用意する
ということをお勧めします。
これなら、そのダイアログがイベントを捕まえることができますし(WM_DEVICECHANGEはトップレベルウィンドウに発行される)
状態的に閉じた処理が可能となるので、実装は比較的楽になるのではと思います。
引用返信
編集キー/
編集
トピック内ページ移動 / <<
0
>>
このトピックに書きこむ
過去ログには書き込み不可
管理者用
-
Child Tree
-