Usuário com melhor resposta
ActiveX Windows Vista 64bits C# x VBA

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