HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0825
tabプレビューウィンドウ(?)のつくり方3未解決


tab

リンク

2010/8/25(Wed) 00:02:18|NO.34620

Windows vistaや7にある、タスクバーのボタンにマウスポインタを乗せると出てくるプレビューウィンドウ(?)のようなものを、
常時表示するソフトを作りたいと思っています。
そこでそのウィンドウをバッファにキャプチャ、書き込みしながら更新しようと考えていたのですが、
これでは自分で作ったソフトの中でしか表示できず、さらに常にウィンドウをアクティブにしなければならないためプレビューの意味がありません。
そこでwinapiを使ってみようと思ったのですがどの機能を使っているのかわからず、まずwinapiの使い方もわからなくなってしまいました。

*やりたいこと
・ブラウザやエクスプローラのプレビュー画面を作りたい
・常に更新している

どなたか助言をいただけないでしょうか?



この記事に返信する


あまま

リンク

2010/8/25(Wed) 21:33:59|NO.34631

こういうことでしょうか。

キャプチャするウィンドウが最小化している場合には使えません。


#include "user32.as" #include "gdi32.as" #module capture #define NULL 0 #define SRCCOPY 0x00CC0020 #define CAPTUREBLT 0x40000000 //=================================================== //=== 指定ウィンドウのキャプチャ //=== //=== WindowCapture p1, p2 //=== //=== p1 : キャプチャするウィンドウのタイトル //=== p2 : ウィンドウID //=== #deffunc WindowCapture str WindowTitle, int ID FindWindow NULL, WindowTitle; // 指定されたタイトルのウィンドウハンドルを取得 handle = stat; dim rect, 4; GetWindowRect handle, varptr( rect ); sx = rect( 2 ) - rect( 0 ); // ウィンドウサイズ横 sy = rect( 3 ) - rect( 1 ); // ウィンドウサイズ縦 sel = ginfo_sel; // 操作先ウィンドウIDを記憶 buffer ID, sx, sy, 0; // キャプチャするウィンドウサイズでバッファ作成 color 255, 255, 255; boxf; GetWindowDC handle; // デバイスコンテキストのハンドル取得 hdchandle = stat; // バッファに画面コピー BitBlt hdc, 0, 0, sx, sy, hdchandle, 0, 0, SRCCOPY|CAPTUREBLT; ReleaseDC handle, hdchandle; // デバイスコンテキスト解放 gsel sel; // 操作先ウィンドウを戻す return; #global screen 0, 640, 480, 0; gmode 1; *main await 200; WindowCapture "キャプチャするウィンドウのタイトル", 1; pos 0, 0; gzoom sx@capture / 2, sy@capture / 2, 1, 0, 0, sx@capture, sy@capture; goto *main



tab

リンク

2010/8/25(Wed) 21:51:39|NO.34632

あああ・・・すみません最後に肝心なことを入れ忘れてました
・最小化の状態でプレビューを有効にできる
という条件が入ってませんでした。
つまり、目標としては最小化しているウィンドウをプレビューし続けたいのです。

あとあまま様のサンプルで19行目「FindWindow NULL, WindowTitle; // 指定されたタイトルのウィンドウハンドルを取得」でエラーが出てしまいました。
何か足りないのでしょうか?



あまま

リンク

2010/8/25(Wed) 23:39:23|NO.34634

> あとあまま様のサンプルで19行目「FindWindow NULL, WindowTitle; // 指定されたタイトルのウィンドウハンドルを取得」でエラーが出てしまいました。
> 何か足りないのでしょうか?

WindowCapture "キャプチャするウィンドウのタイトル", 1;
この行で指定したタイトルと完全に一致するウィンドウが
見つからない場合はエラーになるようです。


例として、IEでGoogleのページを開いている場合は

"Google"ではなく、

"Google - Windows Internet Explorer"

このように正確に書かないとエラーになります。



最小化時のプレビューに関しては・・・
IsIconic等を使って最小化されている場合は
キャプチャを取得しないようにするか、
キャプチャを取得するときに
対象のウィンドウを元のサイズに戻し取得後に
再度最小化するといった方法くらいしか思いつきません。

前者は静止画となってしまいますし、
後者は画面がチラついてしまいますが。。。



ONION software Copyright 1997-2023(c) All rights reserved.