Pergunta

Em primeiro lugar, por favor, desculpe-me para qualquer incoerência na telha desta questão. Ele provavelmente tem alguns, mas realmente não sei melhor.

Esta questão foi suscitada no âmbito de controlar iTunes via COM de 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>

O que eu gostaria de fazer é recuperar ' IiTunes ' do iTunes e ' IITLibraryPlaylist ' de lib. Eu tentei tipo (itunes) e tipo (lib), mas ambos só retorno "" e isso não é o que estou procurando.

Graças.

Foi útil?

Solução

Infelizmente eu não tenho nenhuma máquina Windows à mão para tentar, mas acho que itunes.__class__ é a classe (old_style) do objeto itunes em questão, e lib.__class__ que de lib. Então, olhando para o atributo __name__ das classes deve dar-lhe o que você deseja.

É, infelizmente, que estas são as classes de estilo antigo (assim type(...) não funciona direito), mas win32com tem sido em torno de um longo tempo, desde bem antes das classes de estilo novo brilhantes nasceram em Python 2.2, por isso é totalmente compreensível , eu acho; -)

.

Outras dicas

A principal razão para este erro atributo é porque seu COM-servidor mudou de ligação tardia (dinâmico) para ligação antecipada (estático).

  • Na ligação tardia, sempre que um método é chamado, o objeto é consultado para o método e se for bem sucedido, então a chamada pode ser feita.
  • Na ligação antecipada, as informações do modelo de objeto é determinado com antecedência de informações de tipo fornecido pela chamada objeto. Primeiras marcas de ligação utilizar de MakePy. Além disso, no início de ligação é sensível.

Tente:

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

Isto irá forçar o servidor COM para o foco ajustado no módulo dinâmico que deve dar-lhe apenas o objeto COM do iTunes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top