[python-win32] Creating python com objects
Tim Golden
mail at timgolden.me.uk
Thu Apr 24 13:11:12 CEST 2008
Alex Denham wrote:
> class PyIDropTarget:
> _public_methods_ = ['DragEnter', 'DragOver', 'DragLeave', 'Drop']
> _reg_progid_ = "Python.PyIDropTarget"
> _reg_clsid_ = '{00000122-0000-0000-C000-000000000046}'
> def DragEnter(self, args=None):
> print 'DragEnter: ', args
> def DragOver(self, args=None):
> print 'DragOver: ', args
> def DragLeave(self, args=None):
> print 'DragLeave: ', args
> def Drop(self, args=None):
> print 'Drop: ', args
>
> Then i just used the com register thing to register it, then i tried
> dropTarget = win32com.client.Dispatch("Python.PyIDropTarget")
> I didn't know about the pythoncomWrapObject however.
You can't call Dispatch on this object because it's not
implementing IDispatch. I think you'll need something like
this (untested):
<code>
import pythoncom
CLSID = '{89DD545A-2C83-4103-AFE3-6CEB7FF5ECA4}'
# Generated by pythoncom.CreateGuid
PROGID = "Tim.DropTarget"
DESC = "Drop target handler for Tim's app"
class DropTarget:
_reg_clsid_ = CLSID
_reg_progid_ = PROGID
_reg_desc_ = DESC
_public_methods_ = ['DragEnter', 'DragOver', 'DragLeave', 'Drop']
_com_interfaces_ = [pythoncom.IID_IDropTarget]
def DragEnter(self, args=None):
print 'DragEnter: ', args
def DragOver(self, args=None):
print 'DragOver: ', args
def DragLeave(self, args=None):
print 'DragLeave: ', args
def Drop(self, args=None):
print 'Drop: ', args
drop_target = pythoncom.WrapObject (
DropTarget, pythoncom.IID_IDropTarget
)
#pythoncom.RegisterDragDrop (hWnd, drop_target)
</code>
More information about the python-win32
mailing list