Acessando enums em um objeto COM [JScript
-
11-09-2019 - |
Pergunta
Como faço para acessar uma enumeração definida em uma interface COM? Especificamente, criei uma nova instância de um iTunes.Application:
var iTunesApp = WScript.CreateObject("iTunes.Application");
... e eu quero poder usar certos enumes definidos no COM
referência do arquivo iTuneSTrackCom.idl
[...]
Enumerações
[...]
enum ITVideoKind {
ITVideoKindNone = 0,
ITVideoKindMovie,
ITVideoKindMusicVideo,
ITVideoKindTVShow
}
Eu tentei o iTunesApp.itvideokindtvshow, mas isso não parece funcionar.
Como alternativa, como eu poderia enraizar o objeto iTunesapp interativamente através de uma concha ou algo assim?
Solução
Você não pode usar o enum pelo nome. Você tem que apenas usar as constantes: 0, 1, 2 ...
É realmente incrível quando você está lidando com campos de bits. Você tem que usar o valor decimal da bandeira, por exemplo, o flags
parâmetro para IhtmltxTrange :: findText ().
Outras dicas
Você pode usar uma ferramenta como o TLB2CONT para gerar constantes a partir do TypeLib.
Veja minha resposta aqui:É possível expor um c# enum para os chamadores interoperes e, em caso afirmativo, como?