Pregunta

En primer lugar, discúlpeme por cualquier incoherencia en el mosaico de esta pregunta. Probablemente tiene algunos, pero realmente no lo sé mejor.

Esta pregunta se planteó en el contexto del control de iTunes a través de COM desde Python.

>>> 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>

Lo que me gustaría hacer es recuperar ' IiTunes ' de itunes y ' IITLibraryPlaylist ' de lib. He intentado type (itunes) y type (lib) pero ambos solo devuelven " " y eso no es lo que estoy buscando.

Gracias.

¿Fue útil?

Solución

Desafortunadamente no tengo una máquina Windows a la mano para intentarlo, pero creo que itunes .__ class__ es la clase (old_style) del objeto itunes en cuestión, y lib .__ class__ la de lib . Entonces, mirar el atributo __name__ de las clases debería darte lo que deseas.

Desafortunadamente, estas son clases de estilo antiguo (por lo que type (...) no funciona correctamente), pero win32com ha existido por MUCHO tiempo, desde mucho antes del nuevo y brillante- las clases de estilo nacieron en Python 2.2, por lo que es totalmente comprensible, creo ;-).

Otros consejos

La razón principal de este error de atributo es porque su servidor COM ha cambiado de enlace tardío (dinámico) a enlace temprano (estático).

  • En Enlace tardío, cada vez que se llama a un método, se consulta el objeto por el método y, si tiene éxito, se puede realizar la llamada.
  • En Early Binding, la información del modelo de objeto se determina de antemano a partir de la información de tipo suministrada por la llamada al objeto. La unión temprana hace uso de MakePy. Además, la unión temprana es sensible a mayúsculas y minúsculas.

Prueba:

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

Esto forzará al servidor COM a establecer el foco en el módulo dinámico que debería proporcionarle solo el Objeto COM de iTunes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top