Frage

Zunächst einmal entschuldigen Sie mich für jede Inkohärenz in der Fliese dieser Frage. Es hat wahrscheinlich einige, aber weiß wirklich nicht besser.

Diese Frage im Zusammenhang mit der Steuerung von iTunes über COM von Python angesprochen wurde.

>>> itunes = win32com.client.Dispatch("iTunes.Application")
>>> itunes
<win32com.gen_py.iTunes 1.12 Type Library.IiTunes instance at 0x27248400>
>>> lib = itunes.LibraryPlaylist
>>> lib
<win32com.gen_py.iTunes 1.12 Type Library.IITLibraryPlaylist instance at 0x27249880>

Was würde ich tun möchte, ist, abrufen ' IiTunes ' von itunes und ' IITLibraryPlaylist ' von lib. Ich habe versucht, Typ (itunes) und Typ (lib), aber sie beide nur return „“ und das ist nicht das, was ich suche.

Danke.

War es hilfreich?

Lösung

Leider habe ich keinen Windows-Rechner zur Hand, um zu versuchen, aber ich denke, itunes.__class__ ist die (old_style) Klasse des itunes Objekts in Frage, und lib.__class__ dass der lib. So Blick auf die __name__ Attribut der Klassen sollten Sie geben, was Sie sich wünschen.

Es ist leider, dass diese alten Stil-Klassen (so type(...) Recht nicht funktioniert), aber win32com hat sich für eine lange Zeit, von gut vor den glänzenden neuen Stil Klassen in Python geboren wurden 2.2, so ist es völlig verständlich, ich denke, -).

Andere Tipps

Der Hauptgrund für dieses Attribut Fehler ist, weil Ihr COM-Server von später Bindung (dynamisch) verschoben hat, um frühe Bindung (statisch).

  • Bei später Bindung, wenn eine Methode aufgerufen wird, wird das Objekt für die Methode abgefragt und wenn es gelingt, dann kann der Anruf erfolgen.
  • In der frühen Bindung, die Informationen des Objektmodells wird im Voraus von Typinformationen durch den Objektaufruf geliefert bestimmt. Die frühe Bindung Marken Makepy verwenden. Auch die frühe Bindung ist Groß- und Kleinschreibung.

Versuchen:

itunes = win32com.client.dynamic.Dispatch("iTunes.Application")

Damit wird der COM-Server erzwingen Fokus auf das dynamische Modul zu setzen, die Sie nur die COM-Objekt von iTunes geben sollte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top