我一直在努力创建一个覆盖其他应用程序的透明窗口。我发现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对象?我无法理解。
答案 0 :(得分:2)
正如PyHANDLE的文档所说,“接受句柄对象的大多数函数也接受整数”。你试过传递UpdateLayeredWindow整数吗?
基本上,PyHANDLE只是一个整数的薄包装器,具有额外的属性,当PyHANDLE对象消失时,将调用它上面的win32api.CloseHandle。
答案 1 :(得分:2)
pywintypes.HANDLE
PyHANDLE = HANDLE()
创建一个新的HANDLE对象