views:

53

answers:

1

I've been playing around trying to create a transparent window that will overlay another application. I'm finding the win32 extensions are a bit of a mess, there's win32ui, win32gui, winxpgui, etc. somewhat confusing.

Anyway, I'm trying to pass a handle to a window to this function win32gui.UpdateLayeredWindow

the first argument it wants is a handle, as a pyhandle type.

all the methods to find a handle of a window, all return an int, and not the pyhandle type. even the ones from the same modules. win32gui.findwindow(None, "windowtitle") finds and returns the handle for the window i want, but only in int form and not as a PyHandle.

here's the docs for the object. http://docs.activestate.com/activepython/2.5/pywin32/PyHANDLE.html

here's the docs for the findwindow method. docs.activestate.com/activepython/2.5/pywin32/win32gui__FindWindow_meth.html

and here's the docs for the method that will not accept int. docs.activestate.com/activepython/2.5/pywin32/win32gui__UpdateLayeredWindow_meth.html

I've even tried using WX to create and find handles for windows, it also only returns int.

there's another function that wants a handle, written by the same people, and it accepts int as a handle. win32api.SetWindowLong

Question is, is there some way to create a PyHANDLE object from the int i receive? I can't figure it out.

A: 

As the docs for PyHANDLE say, "Most functions which accept a handle object also accept an integer". Have you tried passing UpdateLayeredWindow the integer?

Basically, a PyHANDLE is just a thin wrapper around an integer, with the extra property that when the PyHANDLE object goes away win32api.CloseHandle will be called on it.

Daniel Stutzbach
you are correct, the function does also accepts ints as arguments.it was my mistake, the error was due to another argument i was passing, i guess i just assumed it was the first one.thank you very much for the reply
Aaron Curtis