• 締切済み

ウインドウハンドルの数値

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

みんなの回答

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

> hSpecialWndが他のアプリケーションをキャプチャーしたウインドウだったとしても、 > hSpecialWndが、偶然にhStaticWndと同じ数字であることはありえませんか? ありえません。「ハンドル」というのは、そういうものです。 > hSpecialWndがhStaticWndであるかを調べる場合、 > if (hSpecialWnd == hStaticWnd) > でいいんですか? 良いと思うんですが、何かの間違いで、その子ウィンドウが居なくなっているとも限らないので、 hSpecialWnd に特別なメッセージを SendMessage() して、子ウィンドウの WndProc() で そのウィンドウならではの数値を返すようにしてあげる、というように私なら作ります。

yuyata
質問者

補足

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

すると、全ての回答が全文表示されます。

関連するQ&A