C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

メッセージボックスのスクリーンショットを撮るには

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■95174 / inTopicNo.1)  メッセージボックスのスクリーンショットを撮るには
  
□投稿者/ レッツ (1回)-(2020/06/28(Sun) 17:57:17)

分類:[.NET 全般] 

2020/06/28(Sun) 17:57:45 編集(投稿者)

エラーが発生した時にエラーメッセージを表示するとともに
そのメッセージボックスとプログラムの状況を自動でスクリーンショットを撮って保存したいと考えています。


MessageBox.Show(ErrMsg, "", MessageBoxButtons.OK, MessageBoxIcon.Error)


Call SaveScreenshot()


のようにすると、メッセージボックスが閉じられた後にスクリーンショットが保存されてしまい。

Call SaveScreenshot(Nothing)


MessageBox.Show(ErrMsg, "", MessageBoxButtons.OK, MessageBoxIcon.Error)

のようにすると、メッセージボックスが表示される前にスクリーンショットが保存されてしまいます。

どうすれば、メッセージボックスのスクリーンショットを保存することができますか?




引用返信 編集キー/
■95175 / inTopicNo.2)  Re[1]: メッセージボックスのスクリーンショットを撮るには
□投稿者/ 魔界の仮面弁士 (2763回)-(2020/06/28(Sun) 22:09:12)
No95174 (レッツ さん) に返信
> そのメッセージボックスとプログラムの状況を自動でスクリーンショットを撮って保存したいと考えています。
> Call SaveScreenshot()
これは標準機能ではありませんね。
自作メソッドのようですが、どのような実装にしているのでしょうか。


> どうすれば、メッセージボックスのスクリーンショットを保存することができますか?
フォームで MessageBox モドキを自作すれば、
自分の好きなように制御できるかと思いますよ。


どうしても標準の MessageBox のままが良いのなら…


案1) グローバルフック (WH_CBT など)で、メッセージボックスの表示をとらえて撮影する
https://hp.vector.co.jp/authors/VA016117/hook.html
https://www.codeproject.com/Articles/18399/Localizing-System-MessageBox


案2) 手抜き実装:Timer の Tick イベントで撮影する

Dim capture As EventHandler = Nothing
capture = Sub()
 RemoveHandler Me.Timer1.Tick, capture
Me.Timer1.Stop()
 capture = Nothing
 SaveScreenShot()
End Sub
AddHandler Me.Timer1.Tick, capture
Me.Timer1.Interval = 55
Me.Timer1.Start()
MessageBox.Show(ErrMsg, "", MessageBoxButtons.OK, MessageBoxIcon.Error)
Return
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ