oggetto pitone PyHANDLE in win32gui
Domanda
Ho suonato in giro cercando di creare una finestra trasparente che sovrapporre un'altra applicazione. Sto scoprendo le estensioni Win32 sono un po 'di confusione, c'è win32ui, win32gui, winxpgui, ecc po' di confusione.
In ogni caso, sto cercando di passare un handle a una finestra per questa funzione win32gui.UpdateLayeredWindow
il primo argomento che vuole è una maniglia, come un tipo pyhandle.
tutti i metodi per trovare una maniglia di una finestra, tutto il ritorno un int, e non il tipo pyhandle. anche quelli degli stessi moduli. win32gui.findwindow (nessuno "WindowTitle") reperti e restituisce l'handle per la finestra che voglio, ma solo in forma int e non come un PyHandle.
Ecco la documentazione per l'oggetto. http://docs.activestate.com/activepython/2.5/pywin32/PyHANDLE. html
Ecco la documentazione per il metodo FindWindow. docs.activestate.com/activepython/2.5/pywin32/win32gui__FindWindow_meth.html
ed ecco la documentazione per il metodo che non accetterà int. docs.activestate.com/activepython/2.5/pywin32/win32gui__UpdateLayeredWindow_meth.html
Ho anche provato ad utilizzare WX per creare e trovare maniglie per finestre, ma anche restituisce solo int.
c'è un'altra funzione che vuole una maniglia, scritta dalle stesse persone, e accetta int come maniglia. win32api.SetWindowLong
La domanda è, c'è qualche modo per creare un oggetto PyHANDLE dal int che ricevo? Non riesco a capirlo.
Soluzione
Come la documentazione per PyHANDLE dire: "La maggior parte delle funzioni che accettano un oggetto maniglia accettare anche un intero". Hai provato passando UpdateLayeredWindow l'intero?
In sostanza, una PyHANDLE è solo un sottile wrapper per un intero, con la proprietà in più che quando l'oggetto PyHANDLE va via win32api.CloseHandle sarà chiamato su di esso.
Altri suggerimenti
pywintypes.HANDLE
PyHANDLE = handle ()
Crea un nuovo oggetto MANICO