[python-win32] Creating python com objects
Roger Upole
rwupole at msn.com
Fri Apr 25 12:14:57 CEST 2008
Alex Denham wrote:
> I've had a look at the example and i can't quite pick out what's being
> done differently other than pythoncom.WrapObject() is being called within
> a class and it's being called on the > class it's in?
> Or is it something to do with the arguments passed to wrap object?
>
> Thanks for the help.
> Alex
The class has to explicitely inherit from a policy class
(win32com.server.policy.DesignatedWrapPolicy), and
it has to have an __init__ method that calls _wrap_.
Also, an instance of the class is passed to WrapObject
rather than the class itself.
This is snipped from a working example:
class IDropTarget(win32com.server.policy.DesignatedWrapPolicy):
_com_interfaces_=[pythoncom.IID_IDropTarget]
_public_methods_=["DragEnter","DragOver","DragLeave","Drop"]
def __init__(self):
self._wrap_(self)
def DragEnter(self, DataObject, KeyState, pt, Effect):
print "DragEnter"
print DataObject, KeyState, pt, Effect
def DragOver(self, KeyState, pt, Effect):
print "DragOver"
print KeyState, pt, Effect
def DragLeave(self):
print "DragLeave"
def Drop(self, DataObject, KeyState, pt, Effect):
print "Drop"
print DataObject, KeyState, pt, Effect
dt=IDropTarget()
IDT=pythoncom.WrapObject(dt, pythoncom.IID_IDropTarget,
pythoncom.IID_IDropTarget)
pythoncom.RegisterDragDrop(hwnd, IDT)
Roger
More information about the python-win32
mailing list