2013/1/16 (水) 14:23:11 Mr.XRAY |
[64bit自アプリから32bit他アプリのウィンドウハンドルを知るには?]
http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+201210/12100008.txt
これは,DLL を使用する場合なので,また違うのかも知れませんが,
[645_ウィンドウの階層のツリー表示]
http://mrxray.on.coocan.jp/Delphi/plSamples/645_WindowTree.htm
では,このままのコードで,32bitのEXE,64bitのEXE どちらでもウィンド
ウハンドルが取得できます(Delphi XE2 で確認).
ただ,コード中のInteger はNativeIntあるいはNativeUIntにした方がいいと
思います.
64bit のアプリのウィンドウハンドル値は,64bitなのですが,なぜ32bitアプリ
で64bitのハンドルが取得できるのかは不明です.
おそらく,32bitの値の範囲内だから,だとは思うのですが.推測です.
ところで,型名の'U'は,unsignedで,符号なしの意味です.
つまり,符号なしIntegerです.
Integerは,32bitのDelphiでコンパイルしても,64bitのDelphiでコンパイルして
も32bitの変数です.
一方,NativeIntは,32bit版でコンパイルすると,32bit,64bit版でコンパイル
すると,64bitの変数となります.
32bit版,64bit版のどちらでも動作するアプリで,ウィンドウハンドルを操作
する場合,ポインタの使用がポイントらしいです(MSDNの記事による).
DLL 内での処理は,また違うのかも知れません.
実際のコードが不明なので,確実なことは言えません.
|
|