none
ActiveX Windows Vista 64bits C# x VBA RRS feed

  • Pergunta

  • Tenho um problema crítico:

    Estou precisando chamar um Componente ActiveX a partir do Visual Studio 2005 - C#, quando tento criá-lo me retorna o seguinte erro: "Cannot create ActiveX component.". Detalhe: Se tento criar o mesmo objeto no VBA ele me cria sem nenhum problema....

    Codigo C# (O que eu preciso e nao funciona...):

    object ___Company =Microsoft.VisualBasic.Interaction.CreateObject("SAPbobsCOM.Company", "");

    Codigo VBA (Funciona!):

    Set obj = CreateObject("SAPbobsCOM.Company")

    O mais estranho é que se eu tento pegar o type da classe COM, como digitado abaixo, ele me retorna o tipo certo, sem nenhum problema...

    Type t = System.Type.GetTypeFromProgID("SAPbouiCOM.Company");

    Estou utilizando o VS2005 com o Windows Vista Ultimate 64bits.

    sexta-feira, 16 de março de 2007 14:02

Respostas

  • Fala cara, beleza?

    Partindo do princípio que:

    1-O ActiveX funciona

    2-O registro dele está correto

    3-No Windows Vista 32bits funciona (Se também não funciona, então é permissão com certeza)

    Meu palpite é:

    Quando um código .Net roda na plataforma 64, o JIT compila esse código para 64. Se esse código chama qualquer coisa não gerenciada que seja x86, ele falha.

    A solução é forçar o código a executar como x86. Para isso você entra nas propriedades do projeto, vai no build, Platform Target, que deve estar any, e coloca x86. Compila (ele vai criar uma pasta num diretório diferente do debug ou release, se não me engano é algo tipo debugx86 ou releasex86, algo assim.

    Daí testa com esse código.

     

    Abraço

     

    PS: O GP De formula 1 aqui na Austrália foi muito legal, pena que o Felipe Massa teve problema com o carro...

    domingo, 18 de março de 2007 19:48
  • Que palpite heim? Na mosca... Voce deveria jogar mais na mega sena...

     

    Ficamos tentando te achar na F1 mas nenhum carro batia na arquibancada... heheheheh

     

    Abraço meu caro! Estamos todos com saudades!

    segunda-feira, 19 de março de 2007 11:16

Todas as Respostas

  • Fala cara, beleza?

    Partindo do princípio que:

    1-O ActiveX funciona

    2-O registro dele está correto

    3-No Windows Vista 32bits funciona (Se também não funciona, então é permissão com certeza)

    Meu palpite é:

    Quando um código .Net roda na plataforma 64, o JIT compila esse código para 64. Se esse código chama qualquer coisa não gerenciada que seja x86, ele falha.

    A solução é forçar o código a executar como x86. Para isso você entra nas propriedades do projeto, vai no build, Platform Target, que deve estar any, e coloca x86. Compila (ele vai criar uma pasta num diretório diferente do debug ou release, se não me engano é algo tipo debugx86 ou releasex86, algo assim.

    Daí testa com esse código.

     

    Abraço

     

    PS: O GP De formula 1 aqui na Austrália foi muito legal, pena que o Felipe Massa teve problema com o carro...

    domingo, 18 de março de 2007 19:48
  • Que palpite heim? Na mosca... Voce deveria jogar mais na mega sena...

     

    Ficamos tentando te achar na F1 mas nenhum carro batia na arquibancada... heheheheh

     

    Abraço meu caro! Estamos todos com saudades!

    segunda-feira, 19 de março de 2007 11:16