Я не знаю о вашем прямом вопросе, но, возможно, вы могли бы обойти его, используя comtypes , чтобы перейти прямо от COM к Python, вместо этого вставив C ++ между ними.
Тогда все, что вам нужно сделать, это:
>>> from comtypes import client, COMError
>>> myclassinst = client.CreateObject('MyCOMClass.MyCOMClass')
>>> try:
... myclassinst.DoInvalidOperation()
... except COMError as e:
... print e.args
... print e.hresult
... print e.text
...
(-2147205118, None, (u'MyCOMClass: An Error Message', u'MyCOMClass.MyCOMClass.1', None, 0, None))
-2147205118
None