4

別のアプリケーションをオーバーレイする透明なウィンドウを作成しようとして遊んでいます。私は、win32 拡張機能が少し混乱していることに気づきました。win32ui、win32gui、winxpgui などがあります。やや混乱しています。

とにかく、この関数 win32gui.UpdateLayeredWindow にウィンドウへのハンドルを渡そうとしています

必要な最初の引数は、pyhandle 型としてのハンドルです。

ウィンドウのハンドルを見つけるすべてのメソッドは、pyhandle 型ではなく int を返します。同じモジュールのものでさえ。win32gui.findwindow(None, "windowtitle") は、必要なウィンドウのハンドルを見つけて返しますが、PyHandle としてではなく int 形式でのみ返します。

ここにオブジェクトのドキュメントがあります。 http://docs.activestate.com/activepython/2.5/pywin32/PyHANDLE.html

findwindow メソッドのドキュメントは次のとおりです。docs.activestate.com/activepython/2.5/pywin32/win32gui__FindWindow_meth.html

intを受け入れないメソッドのドキュメントは次のとおりです。docs.activestate.com/activepython/2.5/pywin32/win32gui__UpdateLayeredWindow_meth.html

WX を使用してウィンドウのハンドルを作成および検索しようとしましたが、int のみが返されます。

同じ人によって書かれた、ハンドルを必要とする別の関数があり、ハンドルとして int を受け入れます。win32api.SetWindowLong

質問は、受け取った int から PyHANDLE オブジェクトを作成する方法はありますか? 私はそれを理解することはできません。

4

2 に答える 2

4

PyHANDLEのドキュメントにあるように、「ハンドルオブジェクトを受け入れるほとんどの関数は整数も受け入れます」。UpdateLayeredWindowに整数を渡してみましたか?

基本的に、PyHANDLEは整数の薄いラッパーであり、PyHANDLEオブジェクトがなくなるとwin32api.CloseHandleが呼び出されるという追加のプロパティがあります。

于 2010-08-21T21:24:09.863 に答える