Объект Python PyHANDLE в win32gui

Я играл, пытаясь создать прозрачное окно, которое будет перекрывать другое приложение. Я нахожу, что расширения 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__FindWindow_meth.html

и вот документы для метода, который не будет принимать int. docs.activestate.com/activepython/2.5/pywin32/win32gui__UpdateLayeredWindow_meth.html

Я даже пытался использовать WX для создания и поиска дескрипторов для окон, он также возвращает только int.

есть еще одна функция, которой нужен дескриптор, написанный теми же людьми, и она принимает int в качестве дескриптора. win32api.SetWindowLong

Вопрос в том, есть ли способ создать объект PyHANDLE из полученного мной int? Я не могу понять это.


person Aaron Curtis    schedule 21.08.2010    source источник


Ответы (2)


Как говорится в документах для PyHANDLE, «Большинство функций, которые принимают объект дескриптора, также принимают целое число». Вы пытались передать UpdateLayeredWindow целое число?

По сути, PyHANDLE — это просто тонкая оболочка вокруг целого числа с дополнительным свойством: когда объект PyHANDLE уходит, для него будет вызываться win32api.CloseHandle.

person Daniel Stutzbach    schedule 21.08.2010
comment
вы правы, функция также принимает целые числа в качестве аргументов. это была моя ошибка, ошибка была связана с другим аргументом, который я передал, я думаю, я просто предположил, что это был первый. большое спасибо за ответ - person Aaron Curtis; 22.08.2010

pywintypes.HANDLE

РУЧКА = РУЧКА()

Создает новый объект HANDLE

person myRambo    schedule 09.04.2013