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


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0909
ぽっくるウインドウの裏側の色を調べる方法は?4解決


ぽっくる

リンク

2016/9/9(Fri) 01:53:10|NO.76822

表示しているウインドウの裏側にあたる奥側の背景の色を調べる方法はありますでしょうか?

ありましたらアドバイスをお願い致します。



この記事に返信する


MillkeyStars

リンク

2016/9/9(Fri) 02:15:06|NO.76823

デスクトップウィンドウ(壁紙)

アイコンウィンドウ(デスクトップアイコン専用ウィンドウ)

HSP外ウィンドウ(HSPで作成してないウィンドウ)

HSPウィンドウ(HSPで作成したウィンドウ)

どれを取得したいと思ってるの?
基本的にどれでも取得できるけど、HSPの基本命令及び関数などでは取得できないから OS の命令を使わないと無理だよ。
その際に、どこを取得したいってので処理が違うから、ただ裏側って言われても答えられないと思うよ。



ぽっくる

リンク

2016/9/9(Fri) 03:27:17|NO.76824

>MillkeyStarsさん

ありがとうございます!
取得したいのは、HSPで作ったウインドウの直下にある色です。

ウインドウの真裏といったらいいんでしょうか。
直接デスクトップかもしれないし、ブラウザなどの別ソフトがあればその色です。

よろしくお願いします。



MillkeyStars

リンク

2016/9/11(Sun) 14:53:02|NO.76858

回答がないので、作成手順を書いておく。
(下記に記載する命令は、すべて WinAPI です。HSP命令では取得できませんのであしからず)
(尚、重なっているウィンドウの裏ウィンドウを取得できるのは DWM が有効時のみです)

1. まず、現在作成されているすべてのウィンドウハンドルを取得(EnumWindows・GetWindow など)
(ここで取得した順序が Z座標順となります)
2. 自身のウィンドウハンドルがどの位置に存在するか調べる
(この位置とはウィンドウの階層 Z位置です)
3. 2で位置を調べたらその 2の位置から奥にあるトップレベルウィンドウのハンドルを取得
(自身の位置より一個奥のウィンドウハンドルのオーナーハンドルがトップレベルウィンドウのハンドル)
4. 3で取得したウィンドウハンドルを用いて、デバイスコンテキストを取得(GetDC)
5. 4で取得したデバイスコンテキストで、GetPixel を行う。
6. GetPixel で取得したら、デバイスコンテキストを解放する (ReleaseDC)
7. GetPixel で取得した色を主の思うように使う。

EnumWindows は通常では使用できませんのでHSP掲示板で「コールバック」などを検索してください。



ぽっくる

リンク

2016/9/12(Mon) 20:19:52|NO.76861

>MillkeyStarsさん

細かなご回答ありがとうございます。
参考にして自分なりに勉強してみましたが、結論としてはちょっと今の自分には難しそうです(^^;)

もう少し成長してからまたMillkeyStarsさんの書き込みを読み直して再チャレンジさせて頂きます。
ありがとうございました。

(一応このスレッドは「解決」とさせて頂きます)



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