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

LEAO10 14/06/2013 19:06:13
#424820
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.
EPISCOPAL 14/06/2013 23:24:09
#424830
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 14/06/2013 23:41:01
#424832
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 14/06/2013 23:46:39
#424833
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!!!!!
OCELOT 15/06/2013 08:14:42
#424835
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.
LEAO10 15/06/2013 10:31:17
#424836
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!
EPISCOPAL 15/06/2013 10:38:23
#424837
é 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
LEAO10 15/06/2013 10:55:08
#424838
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!
RICARDO.RAPA 15/06/2013 21:02:29
#424844
Nunca tive problema com registro de dll não para o win7 e nem Win8 utilizo o inno.

grato
OCELOT 19/06/2013 11:16:31
#424975
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
EPISCOPAL 19/06/2013 18:53:16
#424992
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
Página 1 de 2 [13 registro(s)]
Tópico encerrado , respostas não são mais permitidas