DOBON.NET DOBON.NETプログラミング掲示板過去ログ

画面のハードコピーをとりたい

環境/言語:[Windows2000/VB.NET]
分類:[.NET]

いつも、お世話になります。

画面のボタンが押されると、押された時の画面のイメージをクリップボードに保存するような処理を書きたいのですが、分かりません。

Clipboard.SetDataObject("XXXX", True)

でクリップボードに保存できるのは分かったのですが、引数("XXXX"の部分)にどのようなオブジェクトを渡せばよいのか分かりません。

どなたか教えて下さい。
その保存したイメージがBitmapであればそのまま渡せばクリップボード内にビットマップが保存されます。
■No3452に返信(Codingslaveさんの記事)
> その保存したイメージがBitmapであればそのまま渡せばクリップボード内にビットマップが保存されます。

問題はそのようにして画面のイメージを取得するかということではないのですか?
■No3455に返信(りょうさんの記事)
> ■No3452に返信(Codingslaveさんの記事)
>>その保存したイメージがBitmapであればそのまま渡せばクリップボード内にビットマップが保存されます。
>
> 問題はそのようにして画面のイメージを取得するかということではないのですか?

↑そのとおりです。
現在立ち上がっている画面のイメージをどうやって取得するか悩んでいます。
つまり、Alt+PrintScreenを押した時と同じことをコード上からやりたいのです。
> ↑そのとおりです。
> 現在立ち上がっている画面のイメージをどうやって取得するか悩んでいます。
> つまり、Alt+PrintScreenを押した時と同じことをコード上からやりたいのです。

SendKeys.Send("%{PRTSC}")でアクティブなウィンドウがクリップボード上に保存されます。一応Alt+PrintScreenと同じです。
>でクリップボードに保存できるのは分かったのですが、引数("XXXX"の部分)にどのようなオブジェクトを渡せばよいのか分かりません。

あるのでクリップボードに保存する方法を探しているのかと思いました。

では改めて。
方法は3つほどあります。
1つはうほさんがおっしゃっているようにSendKeysを使用する方法
2つ目はAPIのSendInput()を使用してPrintScreen押下をシミュレートする方法(面倒です)
3つ目は伝統的なスクリーンキャプチャを書き直す方法(同じく面倒ですが、クリップボードを経由しません)

3番目については以下に利用できそうなコード(C#ですが)が紹介されています
http://www.c-sharpcorner.com/Code/2003/Dec/ScreenCapture.asp
クリップボードにコード上からイメージを保存するやり方にもいろいろあるんですね。勉強になります。今回はSendKeysを用いて、無事解決することができました。
ほんとにありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板