REGISTRO DE DLL/OCX NO WINDOWS 7/8 - SEJA FELIZ

 Tópico anterior Próximo tópico Novo tópico

REGISTRO DE DLL/OCX NO WINDOWS 7/8 - SEJA FELIZ

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#424820 - 14/06/2013 19:06:13

LEAO10
BRASILIA
Cadast. em:Agosto/2009


Olá Vbmaníacos,

Este tópico é diferente aos que abri e que recebi tanta ajuda...

No VB6, já tive muitos problemas com registro de dll/ocx no Windows 7, imagina no 8... Entre vários tópicos aqui, vi alguns que relatavam que no 7 tem que registrar dll diferente, 1001 soluções diferentes e desgastantes...

Descobri que, se a dll, ocx´s e afins estiverem no mesmo local que o arquivo EXE, elas não precisam ser registradas!!! Pelo menos em 2 testes que fiz, no 7 e no Windows 8, não precisaram...

Então, a partir de agora, coloque o inno para copiar as DLL´s do seu projeto no mesmo caminho do .exe, e seja feliz!

Se alguém descobriu que não é bem assim, favor relatar.

Todos respiramos o mesmo ar, portanto devemos ter todos a mesma chance (Ayrton Senna)

#424830 - 14/06/2013 23:24:09

EPISCOPAL
VARZEA GRANDE
Cadast. em:Maio/2009


Valeu pela dica ... ate abri um topico sobre dll e ocx ...... achei legal o que vc descobriuuu .....

vou fazer uns teste aqui eaiii volto aqui ....

____________________________________________________________________
Episcopal Studios





#424832 - 14/06/2013 23:41:01

EPISCOPAL
VARZEA GRANDE
Cadast. em:Maio/2009


Bom aqui aconteceu os seguinte no win8 interprise ... login como administrador

Eu abri o vb6, standard EXE .... fui em componentes e a OCX não tava na lista ... ai eu fui no botão procurar e abrir Ocx .... simplemente o ele apareceu na listagem e ainda inseriu na caixa de ferramenta ....

O que aconteceu??? o win8 deve ter registrado o OCX e o vb6 lançou ele na caixa ferramenta .... só pode ser


É PRA QUEM FALOU DE IMCOMPATIBILIDADE .... ESTA PODE SER UMA SAIDA ...... ALELUIIIIA ....

____________________________________________________________________
Episcopal Studios





#424833 - 14/06/2013 23:46:39

EPISCOPAL
VARZEA GRANDE
Cadast. em:Maio/2009


Outro teste .... Leão10

Sua afirmativa esta correta no meu teste aqui .... eu usei o ocx na mesma pasta do EXE e rodou perfeitamente ..... conforme voce disse .....

PESSOAL DA MODERAÇÃO ...... destaca o topico ai vai!!!!!

____________________________________________________________________
Episcopal Studios





#424835 - 15/06/2013 08:14:42

OCELOT
SOROCABA
Cadast. em:Março/2012


Estava duvidando muito que isto funcionasse com componentes COM, então testei aqui e não funcionou. Criei dois projetos no VB6, um EXE e uma DLL, no Exe coloquei apenas um Form com um botão que chama um método da minha DLL. Compilei e copiei para um PC com Windows 8 que nunca foi instalado nenhum programa feito em VB6 e não funcionou. O Form abre mas quando  clico no botão ocorre o que eu esperava, um erro do tipo "ActiveX component can't create object". Só não testei uma OCX pois por algum motivo bizarro o VB6 que peguei pra testar trava quando tempo criar ela.

Tem um detalhe ai, no VB5/6 quando você vai adicionar referencia ou componentes na toolbox e manda procurar o DLL ou OCX porque ela não está na lista o próprio VB registra ela no PC.

DLLs que se usa com o "Declare Sub/Function" funcionam desta forma, simplesmente copiando para a pasta do programa, porém DLLs COM precisam ser registradas para serem usadas por um programa feito em VB5/6 pois elas funcionam de um jeito diferente, o seu programa feito em VB não sabe qual o nome  da DLL que ele precisa usar, quando você tenta instanciar uma classe que está em uma DLL é que o  VB vai olhar nas informações do registro da dll para saber qual é ela e ai sim carregar ela, independente de onde ela estiver no PC.

O registro de DLLs COM na verdade não registra só o arquivo, mas também todas as classes que esta DLL tem para que os programas do tipo dos feitos com o VB6 possam saber como usar ela.



#424836 - 15/06/2013 10:31:17

LEAO10
BRASILIA
Cadast. em:Agosto/2009


OCELOT,

Por segurança, eu não estou tirando as linhas de registro de DLL do inno setup, creio que não faz mal tentar registrar, mas desde que adotei esta solução, nunca mais tive problemas, e olha que meu projeto tem muita DLL, OCX...

Resolvi um problema um problema com DLL básica, foi um erro referente a dll do DAO, que dava erro ao acessar o banco de dados, depois que coloquei desta forma,  nunca mais tive problemas.

Talvez só funciona se combinar registro normal de DLL com as DLL no caminho do .EXE

Eu não sei se é a solução definitiva, mas que está me ajudando demais, está... Acredito que pode ajudar outros também!

Todos respiramos o mesmo ar, portanto devemos ter todos a mesma chance (Ayrton Senna)

#424837 - 15/06/2013 10:38:23

EPISCOPAL
VARZEA GRANDE
Cadast. em:Maio/2009


É Ocelot é verdade que com DLL não funciona ..... mas OCX funciona perfeitamente .... inclusive se a ocx não estiver registrada, depois de rodar o EXE parece que o win8 registra ela automaticamente depois de executar o programa, pois eu abri um novo projeto e vi que a ocx apareceu na lista de componentes logo apos a execução do EXE que tinha ela como referencia

conclusão: OCX funciona ate aqui ......... DLL não funcionou



Citação:
Tem um detalhe ai, no VB5/6 quando você vai adicionar referencia ou componentes na toolbox e manda procurar o DLL ou OCX porque ela não está na lista o próprio VB registra ela no PC


com relação a isso eu não sabiaaaa

____________________________________________________________________
Episcopal Studios





#424838 - 15/06/2013 10:55:08

LEAO10
BRASILIA
Cadast. em:Agosto/2009


WOLFFIRE,

Uma questão é não precisar registrar a DLL, outra questão é erro de DLL.

A ocx não precisa registrar, a DLL precisa, mas os erros com DLL que tive foram solucionados assim...

Então, tratando-se da questão solução de erro, acho que tá valendo...

Se esta solução for 100% válida, vida longa ao Visual Basic 6!

Todos respiramos o mesmo ar, portanto devemos ter todos a mesma chance (Ayrton Senna)

#424844 - 15/06/2013 21:02:29

RICARDO_RAPA
TERESINA
Cadast. em:Dezembro/2003


Nunca tive problema com registro de dll não para o win7 e nem Win8 utilizo o inno.

grato

Ricardo Alexandre

"Sei que parecem idiotas as rotas que eu faço. Mas tento traça-las eu mesmo"


#424975 - 19/06/2013 11:16:31

OCELOT
SOROCABA
Cadast. em:Março/2012


OCX também precisa registrar. OCX é a mesma coisa que uma dll, só a extensão é que muda.

Fiz até um teste aqui, consegui arrumar um VB aqui, criei um projeto Exe e um ActiveX Control, coloquei apenas um UserControl no ocx, e adicionei ele no form do exe, compilei e copiei os dois arquivos para um Windows 8 que nunca rodou nenhum programa feito em VB.

Quando tento rodar ele diz que o componente ou uma de suas dependências não está corretamente registrado e não abre.

Quem conseguiu fazer funcionar provavelmente já tinha a OCX registrada no PC em outra pasta, onde ele vai simplesmente ignorar o arquivo que está na mesma pasta do Exe, ou então quem fez a instalação e colocou as dlls/ocx na pasta do programa o próprio instalador registrou elas, o que nesse caso funciona, mas não é só copiar, é copiar e registrar ainda, nesse caso não importa onde você coloca os arquivos, o importante é o registro, salvo o caso do sistema operacional ser de 64 bits, nesse caso os arquivos não podem estar na pasta System32 ou no Arquivos de Programas, precisando estar na SysWOW64 e Arquivos de Programas (x86) respectivamente.

Isso de apenas copiar e não registrar simplesmente não faz sentido quando se trata de componentes COM, pelo menos quando se trata de VB



#424992 - 19/06/2013 18:53:16

EPISCOPAL
VARZEA GRANDE
Cadast. em:Maio/2009


Citação:
Quem conseguiu fazer funcionar provavelmente já tinha a OCX registrada no PC em outra pasta


Esta afirmação não está correta ..... pois comigo funcionou .... o unico porem que eu estava logado como administrador


Citação:
Tem um detalhe ai, no VB5/6 quando você vai adicionar referencia ou componentes na toolbox e manda procurar o DLL ou OCX porque ela não está na lista o próprio VB registra ela no PC


Bom ... isto comigo ja não deu certo ... o vb6 e XP so abre se estiver registrada .... mas no win8 deu certo

____________________________________________________________________
Episcopal Studios





 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por LEAO10 em 21/06/2013 11:28:25