先日、 Twitter してたら面白そうなアプリのツイートが流れてきました。
Steam で販売している”WallpaperEngine”というデスクトップの画像を動画に変更できるアプリが面白い。
設定も凄く簡単だし、最大化しているタブがある時は動画を停止してくれるので CPU に負荷もかからない。
まだアーリーだけど日本語対応予定で 400 円はお買い得。 pic.twitter.com/ihepCzT4xn— ミースケ (@Mi_suke0108) December 27, 2016
どういう仕組みで背景に動画を流しているのか気になったので、
とりあえず想像でいろいろ試してみました。
で、いくつか考えたり実際に試したりしてでてきたのが、以下のもの。
- 不可視 Window を作成する。
1
で作成した Window にて、動画などを再生。2
の画面をコピーし、デスクトップの Window に対して描画する。
音声などが出ている場合、 1
の Window が出している。
ということで、これを実際にやってみました。
ソースコードはこちら
仕組みとしては、WorkerW
というプロセスを取得し、そいつに対して描画命令を出しています。
単純に壁紙を変えるだけならば、 SystemParametersInfo
を使えばいいみたいですが、
こいつはファイルを入力にとるっぽいので、さすがに違うかなと...。
WorkerW
が取得できたら、描画したいウィンドウのクライアント領域をコピーし、
WorkerW
に対して送りつけています。
上記ソースの場合は、内部ブラウザーでやっていますが、
それを自由にカスタマイズしたりできるようにしたものじゃないかと考えています。
それでは。
参考: