最小化されているフォームの画像を取得する方法


藤田  2007-10-09 21:07:08  No: 99520

最小化もしくはAIT+TABで違う画面が表示されている場合などに
隠れているフォームの画像をクリップボードに取り込みたく思い

form1.hdcから以下のように画像を作成しているのですが
         hDCSrc = GetDC(hWndSrc)
         hDCMemory = CreateCompatibleDC(hDCSrc)
         hBmp = CreateCompatibleBitmap(hDCSrc, WidthSrc, HeightSrc)

うまく行きません。よろしくお願い致します


魔界の仮面弁士  2007-10-09 22:28:52  No: 99521

> AIT
…ALT ですよね? (Alternate Key)

> 最小化もしくはAIT+TABで違う画面が表示されている場合などに
下記の解説が参考になるでしょうか。
http://msdn.microsoft.com/library/ja/jpdnwxp/htm/xpvisualstyles.asp

[上位レベルのアプリケーション ウィンドウを表示する]
  [ウィンドウ プレビューに色を付ける]

のあたり。


藤田  2007-10-09 23:39:42  No: 99522

返信ありがとうございます。コードを見直しましたが、腑に落ちないというか、どんな状態(WINキー+D)でも1024Ⅹ768の画像はちゃんと保存されているんです。ただデスクトップの画像だったりするんです。

ちゃんと、form.のハンドルを指定しているのに変ですね。
もう一度見直してみます。


魔界の仮面弁士  2007-10-10 01:05:01  No: 99523

最小化されているウィンドウなら、とりあえず
  Picture1.Cls
  PrintWindow hWndSrc, Picture1.hdc, 0
  Picture1.Refresh
で取得できました。求める結果かどうかはわかりませんが。

> ただデスクトップの画像だったりするんです。
変数名のミスなどで、hWndSrc に 0 が指定されていたとか…。


藤田  2007-10-10 19:09:55  No: 99524

返信ありがとうございます
PrintWindowが非表示領域も描画できるそうですが、
逆にとればそれ以外の場合は非表示領域はできないという事かもしれません。
win32apiからtextで宣言したいのですが、無いようですのであきらめます。

私はピクチャーに表示されている画像を扱うのは得意なのですが、フォームの状態を画像に落として、外部から(ネット経由で)簡単に表示する方法を考えていたのですが。(javaで)全部javaで書くことにしようと思います。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加