我一直在尝试创建一个透明窗口来覆盖另一个应用程序。我发现win32扩展有点混乱,有win32ui,win32gui,winxpgui等等,有些混乱。
无论如何,我试图将一个窗口句柄传递给这个函数win32gui.updatelayeredwindow
它需要的第一个参数是一个句柄,作为pyhandle类型。
所有查找窗口句柄的方法都返回int,而不是pyhandle类型即使是来自同一个模块的。win32gui.findwindow(none,“windowtitle”)查找并返回所需窗口的句柄,但仅以int形式,而不是pyhandle形式。
这是对象的文档。
http://docs.activestate.com/activepython/2.5/pywin32/PyHANDLE.html
这是findwindow方法的文档。
docs.activestate.com/activepython/2.5/pywin32/win32gui\uu findwindow\u meth.html
这里是方法的文档,它不接受int。
docs.activestate.com/activepython/2.5/pywin32/win32gui\uu updatelayeredwindow\u meth.html
我甚至试过使用WX来创建和查找windows的句柄,它也只返回int。
还有一个函数需要一个句柄,由相同的人编写,它接受int作为句柄。win32api.setwindowlong
问题是,有没有办法从我接收的int创建PyHANDLE对象我想不通。
最佳答案
正如PyHANDLE的文档所说,“大多数接受handle对象的函数也接受整数”您是否尝试将整数传递给UpdateLayeredWindow?
基本上,pyhandle只是一个整数的薄包装,它有一个额外的属性,当pyhandle对象离开win32api.closehandle时,它将被调用。