
Dusch reibst:
win32com.client.dynamic.Dispatch("Outlook.Application") macht probleme. wenn ich die py-datei mit IDLE =F6ffne und dann ablaufen lass krieg ich f= ehler meldungen.
1) Schmeiss Idle weg und nimm Pythonwin. Ist meine vollig vorurteilslose Meinung. 2) Folgende Fehlermeldung:
pythonw -u ausguck03.py Traceback (most recent call last): File "ausguck03.py", line 25, in ? DumpDefaultAddressBook() File "ausguck03.py", line 12, in DumpDefaultAddressBook folder = mapi.GetDefaultFolder(win32com.client.constants.olFolderContacts) File "C:\Python23\lib\site-packages\win32com\client\__init__.py", line 168, in __getattr__ raise AttributeError, a AttributeError: olFolderContacts Exit code: 1
liegt daran, da? du zuerst mittels makepy die Typelib-Infos (das ist eine quasi maschinenlesbare Beschreibung, was fur Zeug Ausguck exportiert). -> Pythonwin starten -> COM makepy utility im Tools menu -> Microsoft Outlook 9.0 Object Library (oder halt deine Version) Es steht was da der Form Generating to C:\Python23\lib\site-packages\win32com\gen_py\00062FFF-0000-0000-C000-000000 000046x0x9x0.py Wenn du die Datei im Editor offnest, siehst du, was Ausguck so "offiziell" anbietet. z.B. findest du class Application(CoClassBaseClass): # A CoClass CLSID = IID('{0006F03A-0000-0000-C000-000000000046}') coclass_sources = [ ApplicationEvents, ] default_source = ApplicationEvents coclass_interfaces = [ _Application, ] default_interface = _Application Das bedeutet, da? die Klasse Application das Interface _Application exportiert. Guckst du weiter, findest du die class _Application: ... def ActiveWindow(self): ret = self._oleobj_.InvokeTypes(287, LCID, 1, (9, 0), (),) if ret is not None: ret = Dispatch(ret, 'ActiveWindow', None, UnicodeToString=0) return ret ... _prop_map_get_ = { ... "Name": (12289, 2, (8, 0), (), "Name", None), "Parent": (61441, 2, (9, 0), (), "Parent", None), "ProductCode": (284, 2, (8, 0), (), "ProductCode", None), # Method 'Session' returns object of type '_NameSpace' "Session": (61451, 2, (9, 0), (), "Session", '{00063002-0000-0000-C000-000000000046}'), "Version": (278, 2, (8, 0), (), "Version", None), } Daraus kannst du z.B. lesen, da? es eine Methode Application.ActiveWindow() gibt und da? es ein Property Application.Name gibt. Versuche folgendes: import codecs, win32com.client o = win32com.client.Dispatch("Outlook.Application") print o.Name print o.ActiveWindow() Hat also geklappt. Mein Orginalbeispiel sollte nach makepy auch funktionieren. Du schreibst ferner:
Hab herausgefunden das es die Funktion "Add" gibt. Jetzt hab ich echt keinen plan wie ich die aufrufen soll? weiss nicht sorecht was ich davorschreiben muss. kann ja nicht einfach Add("NewContacts") schreiben um nen neuen Order zu erstellen. Kannst du mir vielleicht das mit der "Add" Funktion dazucoden, dass ich mal seh wie man aus Python die Funktionen aufruft??? Ware dir echt dankbar
Guck dir im oben genannten makepy-generierten Source mal an, was unter class _ContactItem steht. Da findest du z.B. eine *riesige* unwahrscheinlich kranke liste an Properties, die in Kontaktitems enthalten sind. Anlegen geht so: # ausguck auf o = win32com.client.Dispatch("Outlook.Application") mapi = o.GetNamespace("MAPI") folder = mapi.GetDefaultFolder(win32com.client.constants.olFolderContacts) # neuer eintrag item = folder.Items.Add() item.FullName = EncodeUnicodeString("Heinz Erhardt") item.Email1Address = EncodeUnicodeString("heinz.erhardt@nix.invalid") # usw fur alle Properties, die du vergeben willst # Am schluss nicht vergessen: item.Save() _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de
participants (1)
-
Gerson.Kurz@t-online.de