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


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0126
チャーくんライブ サムネイルの取得3解決


チャーくん

リンク

2015/1/26(Mon) 19:17:36|NO.67104

Windows Vistaから導入された、ライブサムネイルを取得する方法はないですか?
デスクトップに表示されてないウィンドウのキャプチャをしたいのですが、
「デスクトップの表示」をすると、ほかのウィンドウも見えなくなります。
または、ほかにいい方法があったら教えてください。



この記事に返信する


774

リンク

2015/1/29(Thu) 01:14:43|NO.67150

これでしょうか。
>https://msdn.microsoft.com/ja-jp/magazine/cc163435.aspx#S7

DwmRegisterThumbnailに取得するウィンドウのhWndを渡せば出来そうな雰囲気です。



tds12

リンク

2015/1/30(Fri) 22:26:12|NO.67171

モジュール化はしていませんが、
hspのスクリプトにしてみました。

//↓dwmapi呼び出し命令登録 #uselib "dwmapi.dll" #func DwmRegisterThumbnail "DwmRegisterThumbnail" int,int,int #func DwmUnregisterThumbnail "DwmUnregisterThumbnail" int #func DwmUpdateThumbnailProperties "DwmUpdateThumbnailProperties" int,int //↓dwmapi関連マクロ登録 #define DWM_TNP_RECTDESTINATION $00000001 #define DWM_TNP_RECTSOURCE $00000002 #define DWM_TNP_OPACITY $00000004 #define DWM_TNP_VISIBLE $00000008 #define DWM_TNP_SOURCECLIENTAREAONLY $00000010 /* typedef struct _DWM_THUMBNAIL_PROPERTIES { DWORD dwFlags; // l(0) : dwFlags RECT rcDestination; // l(4) : rcDestination.left // l(8) : rcDestination.top // l(12) : rcDestination.right // l(16) : rcDestination.bottom RECT rcSource; // l(20) : rcSource.left // l(24) : rcSource.top // l(28) : rcSource.right // l(32) : rcSource.bottom BYTE opacity; // (36) : opacity BOOL fVisible; // l(37) : fVisible BOOL fSourceClientAreaOnly; // l(41) : fSourceClientAreaOnly } DWM_THUMBNAIL_PROPERTIES, *PDWM_THUMBNAIL_PROPERTIES; */ //↓user32呼び出し関数登録 #uselib "user32.dll" #cfunc FindWindow "FindWindowA" sptr,sptr //↓ユーザ定義マクロ #define DspX 100 //サムネイルの表示座標X #define DspY 100 //サムネイルの表示座標Y #define DspW 320 //サムネイルの表示幅 #define DspH 240 //サムネイルの表示高 onexit *exit //終了処理登録 htargetwnd = FindWindow("Progman",0) //サムネイルの取得をしたいウィンドウのハンドルを得る thumbnail = 0 DwmRegisterThumbnail hwnd,htargetwnd,varptr(thumbnail) //サムネイルのハンドルを得る //↓サムネイルハンドル取得に成功したら if stat == 0{ //↓サムネイルのプロパティーを設定 sdim ThumbProps,45 //プロパティー初期化 lpoke ThumbProps,0,DWM_TNP_RECTDESTINATION | DWM_TNP_VISIBLE | DWM_TNP_SOURCECLIENTAREAONLY //dwFlags lpoke ThumbProps,4,DspX //rcDestination.left lpoke ThumbProps,8,DspY //rcDestination.top lpoke ThumbProps,12,DspX + DspW //rcDestination.right lpoke ThumbProps,16,DspY + DspH //rcDestination.bottom lpoke ThumbProps,37,1 //fVisible lpoke ThumbProps,41,1 //fSourceClientAreaOnly DwmUpdateThumbnailProperties thumbnail,varptr(ThumbProps) //サムネイル表示開始 wait 1000 //10秒ほど待つ } gosub *exit //終了する stop //念のためstop //↓終了処理 *exit DwmUnregisterThumbnail thumbnail //サムネイルの登録解除 end //終了 return
自由に使って良いことを明示しておきます。



チャーくん

リンク

2015/1/31(Sat) 09:34:07|NO.67182

ありがとうございます。解決です。

はやくMSDN読めるようになりたい...



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