win32 COM and data types / direction

Tim Roberts timr at
Sun Mar 6 08:21:09 CET 2005

Alexander Eisenhuth <newsuser at> wrote:
>Hello everybody,
>i wonder how the win32 COM extension handles different C-int types 
>(short, int, long).

All of those types are passed on the stack as 32-bit dwords.  No problem.

>Another question for me is weather the 
>"out-direction" of parameter is supported "out of the box" ?

Yes, but you have to make them outputs from your function.  Remember that
assigning to a parameter in Python does not change the parameter from the
caller's point of view:

    def FunWithTwoInts( self, inShort, inInt ):
        print "got as short:% as int%d" % (inShort, inInt)
        return inShort + inInt

If you have multiple OUT parameters, you return a tuple of values.

>To clarify look at the methode "FunWithTwoInts"
> - A sample COM server - almost as small as they come!
># We expose a single method in a Python COM object
>class PythonUtilities:
>     _public_methods_ = [ 'FunWithTwoInts' ]
>     _reg_progid_ = "PythonDemo.Utilities"
>     # NEVER copy the following ID!
>     # Use "print pythoncom.CreateGuid( )" to make a new one
>     _reg_clsid_  = "{40CEA5F8-4D4C-4655-BD8B-0E7B6A26B556}"
>     def FunWithTwoInts(self, inShort, inInt, outSum):
>	print "got as short:%d as int:%d sum:%d" % (inShort, inInt, outSum)
>	outSum = inShort + inInt
># Add code so that when this script is run by
># Python.exe, it self-registers
>if __name__=='__main_  _':
>     print "Registering COM server..."
>     import win32com.server.register
>     win32com.server.register.UseCommandLine(PythonUtilities)
- Tim Roberts, timr at
  Providenza & Boekelheide, Inc.

More information about the Python-list mailing list