Pergunta

É possível usar um OCX (ActiveX Control) em um Winform (provavelmente adicionando -o programaticamente) sem primeiro ter o OCX registrado no RegSRV32?

O que estou tentando alcançar é ativar a instalação do XCOPY. Eu tive o "Axinterop..dll "e" interop..dll "arquivo gerado na minha máquina dev.

Eu já vi a possibilidade de chamar uma DLL sem antes registrá -la (Prosyslib, de acordo com o autor, mas ainda não o testei), já que o OCX também se baseia, presumo que deve haver alguma maneira de fazer isso também.

Foi útil?

Solução

Sim, isso pode ser feito. Você deve assumir que seu aplicativo será implantado apenas no Windows XP (ou Windows Server 2003) ou posterior e, em seguida, você poderá usar o que é chamado de 'registro gratuito' para fazer isso acontecer.

Essencialmente, o que você faz é criar um arquivo de manifesto para a DLL do ActiveX Control, para que o Windows Loader & Com DLL saiba qual é o seu registro sem precisar colocar isso no registro.

Um passo a passo do que fazer é neste artigo no MSDN:Ativação sem registro de componentes com: um passo a passo

"Etapa 6" e "Etapa 7" nesse artigo contêm tudo você precisará.

Acabei de experimentar isso em um dos meus próprios programas C# que usa um controle da Microsoft ActiveX Grid (a antiga "MS Flex Grid") e funciona muito bem. Certifique -se de criar um arquivo de manifesto para o seu aplicativo e para a DLL e substitua os GUIDs apropriados nos locais certos. Pode ser necessário usar o OleView para desenterrar os IDs certos para usar na DLL do ActiveX se você não os tiver à mão.

Outras dicas

Esteja avisado de que, aparentemente, usando componentes com com com os componentes com os componentes do .NET pode causar acidentes aleatoriamente no Windows XP!

Links: Pergunta de Stackoverflow Onde eu aprendi isso, Microsoft KnowledgeBase artigo referido nessa questão. Há um hotfix, mas você não tem permissão para redistribuí -lo.

É ainda muito mais simples no Visual Studio: basta ir a referências, encontrar posições criadas pelo seu OCX (deve haver 2, axsomething e algo) e definido para os dois isolados: verdadeiros em suas propriedades. Sem manifesta, sem código. Agora você deve distribuir seu EXE com o arquivo DLL contendo OCX. Na sua máquina de desenvolvimento, o OCX pode ser registrado.

Após 10 horas pesquisando como executar o aplicativo VB6 com OCX no Win7 sem registrá -lo e os direitos de administrador, encontrei poucas soluções de clique aqui: http://mmm4vb6.atom5.com/yesupdate-0-12-5479.html#c

Precisa verificar o manifesto da incorporação para fazê -lo funcionar. Funciona como charme!

Eu publico solução aqui, porque também encontrei essa pergunta aqui.

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