- 締切済み
【VB.NET】画面のコピー(その2)
度々質問して恐縮です。 先刻同じタイトルで質問した結果、Web上から下記の参考プログラムを見つけることができました。 しかし、次の要求を実現するにはどのようにしてよいのか分かりません。 分かる方がいらっしゃいましたらお教えして頂きたく、お願い申し上げます。 【質問】 (1)以下のプログラムを実行して「Button1」をクリックすると、「Form」のみがjpegファイルとして保存される。これをデスクトップ全体(デスクトップ上で開かれている他のソフトのウィンドウ類を含む。つまり、ディスプレイの表示そのもの)をjpegファイルに保存したい。 (2)同一ファイル名で保存使用とした場合、上書きするか否かの警告を出したい(以下のプログラムでは"c:\screen.jpg"に固定されていますが、ファイル名とディレクトリを変えられるようにする予定)。 ----------以下、参考にしたコード---------- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' [Alt]キー+[Print Screen]キーの送信 SendKeys.SendWait("%{PRTSC}") ' クリップボードに格納された画像の取得 Dim data As IDataObject = Clipboard.GetDataObject() If Data.GetDataPresent(DataFormats.Bitmap) = True Then Dim bmp As Bitmap = CType(data.GetData(DataFormats.Bitmap), Bitmap) ' 取得した画像の保存 bmp.Save("c:\screen.jpg", System.Drawing.Imaging.ImageFormat.Jpeg) End If End Sub ----------参考にしたコードは以上----------
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- popesyu
- ベストアンサー率36% (1782/4883)
1. [Alt]キー+[Print Screen]キー をsendkeyしてるのだからアクティブなウィンドウしか撮れないのです。ということで SendKeys.SendWait("%{PRTSC}") ↓ SendKeys.SendWait("{PRTSC}") 2. まずファイルが存在するかどうかのチェック http://dobon.net/vb/dotnet/file/fileexists.html 存在するなら警告を出すなり連番をつけるなりして保存。 どうも基本的なところがすっぽり抜けているような感がしますが。いきなり実際的なプログラム作成にとりかかるのではなく、それ以前のところから勉強されたほうが良いのではないでしょうか?
お礼
おっしゃられる通り、私自身、勉強する必要があると自覚しております。しかし、そのような時間が取れない状況にありますので、皆様のお知恵を拝借しようと考えた次第です。 ご回答ありがとうございました。