win32gui中的Python PyHANDLE对象

时间:2010-08-21 21:02:32

标签: python winapi win32gui

我一直在努力创建一个覆盖其他应用程序的透明窗口。我发现win32扩展程序有点混乱,win32ui,win32gui,winxpgui等有点令人困惑。

无论如何,我正试图将一个句柄传递给一个窗口到这个函数win32gui.UpdateLayeredWindow

它想要的第一个参数是句柄,作为pyhandle类型。

查找窗口句柄的所有方法都返回int,而不是pyhandle类型。甚至是来自相同模块的那些。 win32gui.findwindow(无,“windowtitle”)找到并返回我想要的窗口的句柄,但只能以int形式而不是PyHandle。

这是对象的文档。 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来创建和查找windows的句柄,它也只返回int。

还有另一个需要句柄的函数,由同一个人编写,并且它接受int作为句柄。 win32api.SetWindowLong

问题是,有没有办法从我收到的int创建一个PyHANDLE对象?我无法理解。

2 个答案:

答案 0 :(得分:2)

正如PyHANDLE的文档所说,“接受句柄对象的大多数函数也接受整数”。你试过传递UpdateLayeredWindow整数吗?

基本上,PyHANDLE只是一个整数的薄包装器,具有额外的属性,当PyHANDLE对象消失时,将调用它上面的win32api.CloseHandle。

答案 1 :(得分:2)

pywintypes.HANDLE

PyHANDLE = HANDLE()

创建一个新的HANDLE对象