AW: Nutzen der COM-Schnittstelle von Zope aus

"Iffland Stefan" <[email protected]>
Newsgroups gmane.comp.web.zope.german
Message-ID <[email protected]>
Hallo Yvon,

 

ich habe die Hinweise dort umgesetzt, aber Zope zickt weiterhin in der Zeile, wo die Empfänger hinzugefügt werden sollen.

 

Konkret sieht das wie folgt aus:

def besprechung(subject, start_year, start_month, start_day, start_hour="0", start_minute="0", debug=False):

    import win32com.client

    import pythoncom

    win32com.client.gencache.EnsureModule('{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}', 0, 2, 4) # Microsoft Office 12.0 Object Library

    win32com.client.gencache.EnsureModule('{00062FFF-0000-0000-C000-000000000046}', 0, 9, 3) # Microsoft Outlook 12.0 Object Library

    win32com.client.gencache.EnsureModule('{8E27C92E-1264-101C-8A2F-040224009C02}', 0, 7, 0) # Microsoft Calendar Control 12.0

    win32com.client.gencache.EnsureModule('{0006F062-0000-0000-C000-000000000046}', 0, 1, 1) # Microsoft Office Outlook View Control

                

    pythoncom.CoInitialize() ... [der Rest wie schon gepostet] ...

 

Wenn ich den Code in der Python-Konsole ausführe läufts. L Was mag Zope also nicht an dem Skript? Liegt es vielleicht generell

an Beschränkungen, die für externe Skripte gelten? Habe ich was übersehen? Ich weiß, dass externe Methoden keinen print-Aufruf und

keine Methoden-Aufrufe haben dürfen, sonst lassen sich die Methoden nicht einbinden. Über diese Hürde bin ich schon einmal hinweg,

muss man sonst noch etwas beachten?

 

Vielen Dank weiterhin.

 

Gruß

Stefan

 

Stefan Iffland

Telefon +49 (7243) 570-1681 
E-Mail [email protected]

 

Von: [email protected] [mailto:[email protected]] Im Auftrag von Yvon Folz
Gesendet: Montag, 23. November 2009 13:10
An: Deutschsprachige Zope-Benutzer-Liste
Betreff: Re: [dzug-zope] Nutzen der COM-Schnittstelle von Zope aus

 

Hallo Allerseits,

ich weiß nicht genau. Aber vielleicht hilft dieser Eintrag eventuell weiter:

http://www.goermezer.de/content/view/323/332/

Gruß Yvon

---

Am 23. November 2009 13:05 schrieb Iffland Stefan <[email protected]>:



Stefan Iffland

Telefon +49 (7243) 570-1681
E-Mail [email protected]

-----Ursprüngliche Nachricht-----
Von: [email protected] [mailto:[email protected]] Im Auftrag von Patrick Gerken

Gesendet: Montag, 23. November 2009 12:19

An: Deutschsprachige Zope-Benutzer-Liste
Betreff: Re: [dzug-zope] Nutzen der COM-Schnittstelle von Zope aus

2009/11/23 Iffland Stefan <[email protected]>:
>> Hallo Patrick,
>>
>> den Holzhammer habe ich noch nicht verwendet. Würde aber - denke ich -
>> auch nicht viel weiter helfen, weil es nur das Problem aus der
>> Python-Konsole behebt. Dass das Skript dort nur läuft wenn Outlook
>> bereits läuft, kann ich verschmerzen. Wichtig ist, dass das Skript von Zope aus gestartet werden kann und auch durchläuft. Deshalb nun auch speziell hier in der Mailing-Liste.

>Jetzt bin ich verwirrt, welchen Fehler du genau bekommst, kannst du mal den Traceback posten?

Ich rufe die externe Methode im Browser mittels der URL
http://localhost:8080/outlook_ext?subject=Stefan%20hat%20frei&start_year=2009&start_month=11&start_day=12 auf.

Anschließend bekomme ich folgende Meldung:
Site Error
An error was encountered while publishing this resource.

Sorry, a site error occurred.

Traceback (innermost last):

Module ZPublisher.Publish, line 231, in publish_module_standard
Module ZPublisher.Publish, line 165, in publish
Module Zope2.App.startup, line 249, in __call__
Module ZPublisher.Publish, line 127, in publish
Module ZPublisher.mapply, line 77, in mapply
Module ZPublisher.Publish, line 47, in call_object
Module Products.ExternalMethod.ExternalMethod, line 234, in __call__
__traceback_info__: (('Stefan hat frei', '2009', '11', '12', '0', '0', False), {}, ('0', '0', False))
Module D:\Urlaubsportal\instance\2.12.1\Extensions\outlook.py, line 22, in besprechung
Module win32com.client, line 463, in __getattr__
Module win32com.client, line 456, in _ApplyTypes_

com_error: (-2147467260, 'Vorgang abgebrochen', None, None)

Im Taskmanager kann man aber beobachten, dass Outlook gestartet wurde.


>> Im Eclipse wird beispielsweise CoInitialize() bzw. CoUninitialize()
>> als Fehler markiert. Vermutlich liegt es daran, dass in der Konsole
>> nur bei laufendem Outlook alles durchläuft. In Zope brauche ich diese
>> Aufrufe aber, weil dieser ja in mehreren Threads läuft und ggf. mehrere Aufrufe parallel bearbeitet werden müssen. Ohne diese Aufrufe kann ab dem zweiten Aufruf dieses Skripts keine Instanz mehr initialisiert werden.

>Soweit ich mich erinnern kann, sind diese Methoden bei den Com Objekten nicht in den python klassen, sondern es wird zur Laufzeit geschaut ob es in com eine passende >Methode gibt. Da hat Eclipse natuerlich Probleme., das heraus zu finden und es zeigt deine Methodenaufrufe als fehlerhaft an.

Da es läuft, mache ich mir an dieser Stelle mal weiterhin keine Sorgen. ;-)


>> Um mal weiter Licht ins Dunkel zu bringen: Das Python-Skript hat in
>> der Konsole auch erst funktioniert nachdem ich in PythonWin die
>> COM-Bibliotheken mit Hilfe vom Makepy-Utility erzeugt habe. Vorher
>> scheiterte das Skript auch an Outlook-spezifischen Attributen oder
>> Methoden. Daher habe ich immernoch den Verdacht, dass Zope - obwohl es seit Version 2.12 scheinbar eher als Python-Modul zu betrachten ist - diese Bibliotheken nicht kennt. Muss man die generierten Klassen / Python-Dateien im Zope noch einmal separat verfügbar machen?

>Ich weiss nicht, was makepy macht. Aber was ganz anderes, ist die com library thread safe, hast du das mal geprueft?
>Wenn nicht, musst du sowieso einen anderen Ansatz fahren.
>
>MfG
>
>      Patrick

Was heißt thread safe? Weiß gerade nicht, was Du meinst.

Viele Grüße
Stefan




_______________________________________________
zope mailing list
[email protected]
https://mail.dzug.org/mailman/listinfo/zope



_______________________________________________
zope mailing list
[email protected]
https://mail.dzug.org/mailman/listinfo/zope
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.