電子書籍の厳選無料作品が豊富!

Test.exeは他のアプリケーションをキャプチャーするソフトです。
Test.exeはチャイルドウインドウとしてhStaticWndを持っています。
Test.exeの唯一のプロシージャでhSpecialWndを定義しました。それは、他のアプリケーションをキャプチャーしたウインドウが格納されているかもしれないし、Test.exeのチャイルドウインドウが格納されているかもしれない状況です。
hSpecialWndがhStaticWndであるかを調べる場合、
if (hSpecialWnd == hStaticWnd)
でいいんですか?
ウインドウハンドルは数値です。hSpecialWndが他のアプリケーションをキャプチャーしたウインドウだったとしても、hSpecialWndが、偶然にhStaticWndと同じ数字であることはありえませんか?

A 回答 (1件)

> hSpecialWndが他のアプリケーションをキャプチャーしたウインドウだったとしても、


> hSpecialWndが、偶然にhStaticWndと同じ数字であることはありえませんか?

ありえません。「ハンドル」というのは、そういうものです。

> hSpecialWndがhStaticWndであるかを調べる場合、
> if (hSpecialWnd == hStaticWnd)
> でいいんですか?

良いと思うんですが、何かの間違いで、その子ウィンドウが居なくなっているとも限らないので、
hSpecialWnd に特別なメッセージを SendMessage() して、子ウィンドウの WndProc() で
そのウィンドウならではの数値を返すようにしてあげる、というように私なら作ります。

この回答への補足

偶然にhStaticWndと同じ数字であることはない
という答えだけについてもあまり自信がないですか?

後半の説明のa-kumaさんの方法を詳しく教えて下さい。
ウィンドウならではの数値というのが分かりませんでした。
例えばcalc.exeのエディットボックスをキャプチャしたとして
if (hSpecialWnd == hStaticWnd)
を実行するなら、電卓が閉じられてcalc.exeのエディットボックスのウインドウハンドルが入っているhSpecialWndの値が無効かもしれないから何かをするんですよね?

補足日時:2003/02/20 11:01
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!