[python-win32] COM: Minimal example of a custom server working with DispatchWithEvents()

michel.claveau at gmail.com michel.claveau at gmail.com
Wed Jul 28 04:09:58 EDT 2021


/Hi!/
/
/
/Druide-Antidote is not a server; it is a client, who connect to 
different servers (COM-servers), like Word, Excel, OpenOffice.org, etc.
/
/
/
/@-salutations
/
/--
/


Le 27/07/2021 à 23:58, William Belanger a écrit :
>
> Hi everyone,
>
> I'm trying to make a cross-platform Python interface for a third-party 
> API (Druide Antidote). The D-Bus part is done and working 
> (https://gitlab.com/-/snippets/2151173 
> <https://gitlab.com/-/snippets/2151173>), it consist of a server 
> adapter (AdaptateurAntidote), which relay the events to an handler 
> class (ImplementationAntidote).
>
> I want to do the same with the COM interface. However, I could not get 
> DispatchWithEvents() to work, as it fails on "ti = 
> disp._oleobj_.GetTypeInfo()";
>
>     C:\Users\user>"C:\Users\user\Desktop\AntidoteCOM.py -
>     Shortcut.lnk" --register
>
>     Requesting elevation and retrying...
>
>     Registered: Correcteur.Antidote
>
>     C:\Users\user>"C:\Users\user\Desktop\AntidoteCOM.py - Shortcut.lnk"
>
>     Traceback (most recent call last):
>
>     File
>     "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\win32com\client\__init__.py",
>     line 256, in DispatchWithEvents
>
>     ti = disp._oleobj_.GetTypeInfo()
>
>     pywintypes.com_error: (-2147352567, 'Exception occurred.', None, None)
>
>     During handling of the above exception, another exception occurred:
>
>     Traceback (most recent call last):
>
>     File "Z:\.antidote_\AntidoteCOM.py", line 54, in _connect
>
>     self.server =
>     win32com.client.DispatchWithEvents("Correcteur.Antidote",
>     EventHandler)
>
>     File
>     "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\win32com\client\__init__.py",
>     line 264, in DispatchWithEvents
>
>     raise TypeError("This COM object can not automate the makepy
>     process - please run makepy manually for this object")
>
>     TypeError: This COM object can not automate the makepy process -
>     please run makepy manually for this object
>
> I noticed that when running localserve.serve() in a separate console, 
> the server returns as DispatchWithEvents() is called. No errors are 
> thrown on the server side, but I assume there is something wrong or 
> missing in the class definition of AdaptateurAntidote. I tried 
> changing its policy to dynamic, but that did not help.
>
> *If someone could provide a minimal example of a custom server working 
> along with DispatchWithEvents(), that would be very helpful. *All the 
> examples I could find use third-party servers, such as those provided 
> by Microsoft.
>
> Full code available is here; https://gitlab.com/-/snippets/2154411 
> <https://gitlab.com/-/snippets/2154411>
>
> Will
>
>
> _______________________________________________
> python-win32 mailing list
> python-win32 at python.org
> https://mail.python.org/mailman/listinfo/python-win32


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.python.org/pipermail/python-win32/attachments/20210728/9795d772/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature0.gif
Type: image/gif
Size: 2292 bytes
Desc: not available
URL: <https://mail.python.org/pipermail/python-win32/attachments/20210728/9795d772/attachment-0001.gif>


More information about the python-win32 mailing list