... Assinatura do site por 3 anos + Kit MontaRibbons + 3 Livros em PDF + Diversas Revistas (pdf) de brinde, por apenas R$145,00
(
podendo parcelar em até 10 vezes no cartão de crédito)...

Clique aqui e obtenha mais detalhes do nosso kit completo e de como comprar.


Vídeo - Sistema Shareware com liberação online

Denomina-se shareware a uma modalidade de distribuição de software que permite ao pretendente avaliar de forma gratuita o produto, mas com limitações no tempo de uso (exemplo: 30 dias de uso) ou em algumas das formas de uso (exemplo: não se pode salvar até que se registre o programa) ou com restrições nas capacidades finais (exemplo: permite usar até 50 registros).  Estas são algumas das limitações que um programa distribuído sob licença shareware pode trazer. Para eliminar estas limitações, deve-se registrar o programa. O registro de um programa normalmente implica em pagamento efetuado ao criador do programa.

O Licenciamento de Uso de software para empresas também é uma prática comum, aonde é cobrada uma mensalidade.   Geralmente programamos o software para bloquear de tempos em tempos, como uma forma de nos proteger, caso haja uma quebra de contrato.   O desbloqueio é feito através do envio do número de registro ou de forma automática (via internet), que demonstro na vídeo-aula.

Cuidado com os termos: Venda de software e Aluguel de software

Vez ou outra, vejo as pessoas usarem os termos Venda de software e Aluguel de software, desconhecendo os prejuízos jurídicos que podem estar envolvidas.  Se você vendeu o software, ele deixou de ser exclusivamente seu. O correto é conceder uma Licença de Uso tanto para a venda quanto para o aluguel, seja ela por tempo indeterminado ou não.   

Contrato de Licença de Uso na instalação:

Os softwares a varejo utilizam o chamado Contrato de Licença de Uso Eletrônico que na maioria das vezes é exibido no decorrer da instalação.

Veja o modelo do Contrato de Licença de Uso exibido no processo de instalação do pacote de arquivos exemplos deste tutorial:

Contrato de Licença de Uso

 

O consumidor deve optar em aceitar os termos de licença para que a instalação se concretize.   Observe que o botão "Avançar" fica desabilitado se o consumidor não optar por aceitar o contrato.

Veja aqui mais orientações jurídicas sobre o contrato de Licença de Uso

É possível montar um esquema shareware eficiente para os aplicativos feitos em Access ?

Sim , esta é a minha proposta neste tutorial. Apresento os principais detalhes de construção de um sistema shareware com base nas limitações no tempo de uso.  Revelo também uma técnica empregada para registrar o aplicativo, usando a internet (sistema online).

Liberação de uso do aplicativo, mediante um código numérico.

O aplicativo ao iniciar, verifica um número armazenado em uma tabela.  Se tal número da tabela coincidir com o número pré determinado, o seu uso é liberado.  Analise abaixo o simples fluxograma:

Registro

 

Ora, se o número 7 for divulgado ou uma simples cópia do aplicativo for distribuída após o registro, não há mais como proteger o aplicativo.  Então, para aprimorar a defesa, vamos utilizar a seguinte técnica:

número do aplicativo(chave) > aplica-se a lógica > resulta no número de liberação (registro)

Faça de conta que o aplicativo tenha gerado o número de identificação 5 e que a lógica empregada foi a de multiplicar por 3, logo o resultado do número de liberação é o 15. 

5 * 3 = 15

Conclusão: O programa que tem a chave 5, só irá liberar o uso se encontrar na tabela o número 15.

Avalie com calma o fluxograma abaixo: Chave de liberação

 

Instalando o aplicativo em outro computador, um novo número de chave será gerado e o resultado de registro será outro.  Com isso, impedimos que o número de registro seja passado adiante.   Porém, ainda há uma falha óbvia: o aplicativo pode ser copiado para outra máquina, após o seu registro, já que são carregados a chave e o registro juntos. 

Para resolver esta questão da cópia, geramos a chave e a gravamos num local externo.  Pode ser em um arquivo txt, em um arquivo ini ou no registro do Windows.   No momento, o que importa na nossa análise é que este número de chave tem que ficar externo ao programa, para garantirmos sua segurança.

Chave externa

Observou bem o fluxograma acima?  Agora, se o aplicativo for copiado para outro micro com a intenção de burlar a segurança, será gerada uma nova chave que aplicada à lógica resultará em um novo número de liberação (registro), tornando inválido o número de registro armazenado na tabela. 

Em vez de gerarmos um número, é possível capturamos números existentes no micro, como por exemplo, o número do HD ou o número da placa de rede.  Vamos optar pelo HD pois a função utilizada para capturar o seu número é bem simples.

Veja a mudança no fluxograma:

Chave do processador

 

Montando a chave, usando o número do HD.

Capturamos o número do HD, usando a API GetVolumeInformation.  Leia atentamente os comentários no código abaixo:

Declare Function GetVolumeInformation Lib "Kernel32" Alias _
"GetVolumeInformationA" (ByVal lpRootPathName As String, _
ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, _
lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, _
lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, _
ByVal nFileSystemNameSize As Long) As Long
 
Public Function fncChaveHD(Digitos As Byte) As String
Dim N&, S1$, S2$, Id As Variant, Unidade$
On Error Resume Next
S1 = String$(255, Chr$(0))
S2 = String$(255, Chr$(0))
'Captura a unidade aonde o Windows está instalado.
Unidade = Left(Environ("windir"), 3)
'Executa a API
N = GetVolumeInformation(Unidade, S1, Len(S1), Id, 0, 0, S2, Len(S2))
'API passa para a variável Id o número do HD
Id = left(Abs(Id),8) 'seleciono os 8 primeiros dígitos
If digitos = 8 Then
   fncChaveHD = Id
ElseIf digitos = 4 Then
   fncChaveHD = Left(Id, 4)
Else
   fncChaveHD = Id
End If
End Function

Aprimorando a lógica.

É preciso elaborar uma lógica que não seja possível a sua identificação.  Podemos elaborar isso com bastante segurança, utilizando um número com 8 dígitos.  Oito dígitos impedem, com folga, uma tentativa de descobrirem o número usando o processo de adivinhação, o que chamamos de força bruta.

Ora, multiplicar por 3, nos exemplos acima, serviu apenas para você entender o conceito.  Contudo se aprimorarmos a lógica, mesmo sendo aplicada sobre um único dígito, dificultaremos bastante.  Por exemplo, tente você descobrir a lógica empregada abaixo.  O aplicativo que tem o número 7 como chave espera por qual número para ser liberado ?

1 > lógica > 5
2 > lógica > 20
3 > lógica > 45
4 > lógica > 44
5 > lógica > 35
6 > lógica > 72
7 > lógica > ??

Se ficou bem difícil você descobrir a lógica acima , imagine, então, uma chave com 8 dígitos.  O que  uso para desenvolver á lógica é uma sucessão de somas, subtrações (valor absoluto), multiplicações e descartes. O resultado é algo totalmente "ilógico" aos olhos do oponente.  Gosto bastante da técnica de descartar dígitos.  Acompanhe a lógica que desenvolvi:

A chave exemplo é: 37681872

Descarto o segundo e o quarto dígitos e obtenho o número: 361872

Somo os dois primeiros dígitos: (3+6) 9

Subtraio o terceiro, do quarto digito: (1 -8) 7 (valor absoluto)

Multiplico o quinto e o sexto dígitos:(7*2) 14

Resultado: 9714

Multiplico por uma constante de 5 dígitos (76543) para elevar o tamanho do número

Novo número: 9714 * 76543

Resultado: 743538702

Descarto o segundo dígito: 73538702

Fico com apenas os 6 primeiros dígitos: 735387

Repito os processos de soma, subtração e multiplicação

Resultado: 10256

Multiplico pela constante para elevar o número: 10256 * 76543

Resultado final com os 8 primeiros dígitos: 78502500

37681872 > lógica > 78502500

Veja os resultados para três chaves em seqüência.  Observe que ao mudar um único número da chave, resulta em uma numeração (registro) totalmente distinta.

37681872 > lógica > 78502500
37681873 > lógica > 89708396
37681874 > lógica > 88024450

Para ficar diferente dos meus resultados, montei a função (aplicando a lógica acima) que gera o número do registro, com passagem de valores, aonde você poderá definir quais os dois dígitos que devem ser descartados da chave e qual a constante deve ser aplicada.

Public Function fncRegistro(pos1 As Byte, pos2 As Byte, k As Long) As Long
Dim varChaveReg As Variant
Dim Id As Variant
Dim n(3) As Variant
Dim j As Byte

If booComercial Then
    Set objReg = CreateObject("wscript.shell")
    varChaveReg = Split(fncDeCripChave(objReg.RegRead(idx)))
    Id = fncChaveHD(4) & varChaveReg(0)
    Set objReg = Nothing
Else
    'Gera chave de 8 dígitos baseado no número do HD
    Id = fncChaveHD(8) 
End If
'descarte 
For j = 1 To 8
    If Not (j = pos1 Or j = pos2) Then
        n(0) = n(0) & Mid(Id, j, 1)
    End If
Next

Id = n(0)
'Soma
n(0) = CInt(Left(Id, 1)) + CInt(Mid(Id, 2, 1))
'Subtração
n(1) = Abs(CInt(Mid(Id, 3, 1)) - CInt(Mid(Id, 4, 1)))
'Multiplicação
n(2) = CInt(Mid(Id, 5, 1)) * CInt(Mid(Id, 6, 1))
'Multiplicando pela constante
Id = CLng(n(0) & n(1) & n(2)) * k
'Descartando o segundo dígito
Id = Left(Id, 1) & Mid(Id, 3, Len(Id) - 2)
'Soma
n(0) = CInt(Left(Id, 1)) + CInt(Mid(Id, 2, 1))
'Subtração
n(1) = Abs(CInt(Mid(Id, 3, 1)) - CInt(Mid(Id, 4, 1)))
'Multiplicação
n(2) = CInt(Mid(Id, 5, 1)) * CInt(Mid(Id, 6, 1))
'Multiplicação pela constante, selecionando os 8 primeiros dígitos
Id = Mid(CLng(n(0) & n(1) & n(2)) * k, 1, 8)
'Resultado
fncRegistro = Id
End Function

Para a chave 37681872 você pode ter resultados bem diferentes, trocando os valores dos argumentos.  Por exemplo, para os cortes do segundo e quarto dígitos e a constante 76543, temos o resultado:

fncRegistro(2,4,76543) = 78502500

Para os cortes do primeiro e terceiro dígitos e a constante 72615, temos o resultado:

fncRegistro(1,3,72615) = 37135311

Agora, vamos acrescentar ao projeto, a parte responsável pelo controle do prazo determinado.  observe no fluxograma, a parte acrescentada em vermelho:

Sistema Shareware

 

A programação do tempo decorrido exige uma especial atenção, pois a manobra de atrasar a data do sistema é muito empregada e temos que prever tal ataque.  Um caminho que encontrei foi o de usar a internet para capturar a data e usá-la no cálculo do tempo decorrido. Assim, o oponente não tem como interferir.  Se a máquina não tem acesso a internet, o cálculo é realizado com a data do sistema, sendo ainda possível elaborarmos algumas defesas.  Na vídeo-aula apresento o fluxograma completo da caixa "conta e grava tempo decorrido(t)".

Sistema comercial

O sistema comercial difere um pouco porque o nosso objetivo é ficar contando o prazo.  O registro não precisa ser guardado, pois serve apenas como uma forma de autenticação, para que o tempo decorrido seja zerado e o software liberado novamente pelo prazo determinado.

Sistema shareware comercial

 

Criptografia

Para dificultar ainda mais o oponente, a chave do aplicativo, a data do último acesso e o tempo decorrido, que são guardados tanto no registro do Windows quanto numa tabela local, devem ser embaralhados de modo que fiquem ilegíveis.  Esta técnica de tornar os dados ilegíveis se chama criptografia.  Existem criptografias avançadíssimas, inclusive é uma matéria da Matemática. No nosso caso, vamos usar uma criptografia bem simples, mas que atende perfeitamente a nossa segurança.

Suponha que eu queira passar o número 4 numa transmissão de dados, porém, irei somá-lo ao misturador 3, tendo como uma resultante o número 7.   O que se transmite então é o número 7, que se for interceptado estará passando uma informação falsa.   O número 7 chegando ao seu destino deverá ser subtraído do misturador 3 e então terei o número 4 como resultado.

4 + 3 = 7  >>>  7 - 3 = 4

Mais um exemplo: Imagine que eu queira transmitir o número 48 que usará o misturador 23

48 (23)

4 + 2 = 6
8 + 3 = 11

48 (23) = 611

611 é a informação que será transmitida.

6 - 2 = 4
11 - 3 = 8

611(23) = 48

Chegando ao seu destino o misturador será retirado e terei o 48 como resultado.

48 + 23 = 611 >>> 611 - 23 = 48

Como você já deve saber, cada uma das letras, números e símbolos tem o seu número correspondente para o computador.  Por exemplo, o "a" minúsculo corresponde ao número 97.  A função ASC() mostra o número correspondente ao caractere e a função CHR(), o inverso; ou seja, mostra o caractere correspondente ao número.  Vamos montar um exemplo para você entender melhor como isso funciona.

Faça de conta que eu queira transmitir os caracteres av e que usarei o misturador 2M

av (2M)

Aplicarei a função ASC() para capturar o número correspondente do caractere.

asc("a")= 97
asc("v") = 118
asc("2")= 50
asc("M") = 77
 

Farei a mistura de a com 2 e de v com M, usando os números.  Empregarei a função CHR() para capturar o caractere resultante após a mistura.

97 + 50 = 147 > chr(147) = “
118 +77 = 195 > chr(195) = Ã

Para av será então transmitido

av+2M = “Ã >>> “Ã - 2M = av

Observe com atenção a função da criptografia:

Public Function fncCripChave(varChave As Variant) As Variant
Dim i As Integer
Dim k As Integer
Dim strBuff As String
Dim strpwd As String
On Error GoTo trataerro
'Misturador
strpwd = "MNBVCXZLKJ039RTY4U6W"
For i = 1 To Len(varChave)
   k = Asc(Mid$(varChave, i, 1))
   'para descriptografar inverta o sinal
   k = k + Asc(Mid$(strpwd, i, 1))
   strBuff = strBuff & Chr$(k)
Next i
fncCripChave = strBuff
sair:
   Exit Function
trataerro:
   fncCripChave = 0
   Resume sair
End Function

A função para descriptografar é a mesma , trocando-se apenas a soma pela subtração na linha k = k - Asc(Mid$(strpwd, i, 1))

Note os resultados da criptografia aplicada:

fncCripChave("avelino") = ®Ä§Â¬ÆÉ

fncCripChave("37681872") = €…xŽt‘

Tela de registro

Veja abaixo o formulário de registro que  lhe disponibilizo! Na parte superior tem o campo de informações para o usuário. Observe que há duas opções para se realizar o registro: uma Online e a outra Offline.  Na opção Online são usados o email e a data de nascimento (poderia ser uma senha) do usuário, como forma de autenticação.  Com o usuário devidamente identificado pelo site é passado o número de registro, liberando o aplicativo.  Na forma Offline, o usuário deve informar o número da chave para que o número de registro seja gerado e passado ao usuário, liberando assim, o aplicativo.

Registro Online ou Offline

O Access e a Internet

O Access pode tanto receber como passar valores para uma página na web. 

A forma mais simples de se passar valores para uma página é anexando-os à URL.   Para exemplificar, clique no link abaixo e veja a página carregando as informações (nome e time) passadas na URL:

http://www.usandoaccess.com.br/comum/time.asp?nome=avelino&time=fluminense

Agora vá na URL do seu navegador e troque para o seu nome e para o seu time e veja o resultado na página.

Para capturar valores de uma página (formulário) da internet, usamos o comando getElementByID(id)

Exemplo: Me!WebBrowser.Document.getElementByID("rg").Value

O valor do campo de um formulário da página da internet, identificado como rg , é então passado para o Access.

Como o objetivo é esconder o envio e o recebimento, carrego a página Browser dentro de um formulário, usando o ActiveX "Microsoft Web Browser".  Os valores são passados e recebidos pelo browser deste formulário, que fica oculto.

Na vídeo-aula apresentada você poderá observar tudo isso funcionando!

Insegurança para o comprador, por isso a razão de um sistema online

Sempre que colocava um programa shareware à venda(licenciado) , surgiam as seguintes perguntas:

Se eu formatar a minha máquina, terei que fazer o registro novamente? Terei que pagar por outra licença?

Mesmo com a questão bem esclarecida, ainda fica um questionamento na cabeça da pessoa : Se o cara morrer ou sumir, poderei perder o meu produto? 

Se o produto for de baixo valor a pessoa até arrisca a compra, mas se o produto tiver um valor médio ou alto, isso poderá acabar embargando a sua decisão.

Percebendo que poderia estar perdendo vendas com esta questão do registro, resolvi criar um sistema de liberação online e, sinceramente, venho tendo ótimos resultados.  Pelo menos não tenho recebido mais essas indagações. No final do artigo sobre o aplicativo MontaRibbons deixo a questão bem resolvida. É só conferir!  É claro que ainda fica uma certa insegurança por parte do consumidor, mas acredite,  o registro online minimizou bastante essa questão! 

Política de liberação de registro online. Uma percepção tirada da Microsoft.

Se você for instalar o Office original, verá que o registro poderá ser realizado de forma online.   Tente instalar esse mesmo produto uma semana depois e verá que o registro online será rejeitado.  Após dois meses, tente novamente instalar o mesmo Office e veja que o registro online será permitido.  A conclusão disso é que a Microsoft inibe a tentativa de se instalar o produto em mais de uma máquina, a um curto prazo.  Ela não lhe impede de reinstalar o produto antes deste prazo mínimo, mas você terá que ligar e dar uma pequena explicação do motivo da reinstalação.  

A Microsoft entende que depois de um tempo é comum haver a necessidade de uma reinstalação do produto e então acaba liberando o registro online.  Outra questão interessante é que ao liberar o produto evita que o consumidor faça contato telefônico e ocupe um funcionário. E o outro aspecto muito positivo é o usuário poder registrar o software, sem perda de tempo.

Montei um sistema de liberação online baseado nesta observação que fiz da Microsoft.  A pessoa registra o produto e num prazo de 15 dias o sistema rejeitará um novo registro online (terá que me ligar ou passar email se justificando).   Após os 15 dias, o sistema volta a liberar o registro online.  Determino também um limite de registros por ano.   Por exemplo: 8 registro por ano (deverá me solicitar por telefone ou email até o encerramento do ano). 

É claro que você tem que prever que vão querer lhe passar a perna, mas a maioria esmagadora não tem essa índole!  Então, não fique fechando portas e dificultando o cliente por causa de uma minoria irrelevante.  Faça a vida do seu cliente mais fácil e você estará ganhando credibilidade e agregando valor ao seu produto!

Estou aqui apresentando uma idéia e é você quem deve adaptá-la da forma que melhor lhe convier!  A partir de tudo que foi apresentado até agora, quem sabe, você consiga imaginar algo que se aplique melhor ao seu caso!

Política de liberação para sistemas comerciais.

Vejo gente nos fóruns pedindo código que faça o programa solicitar o registro todo mês.  Caramba, precisa ser de fato tão rigoroso assim com o seu cliente?   Será que isso não gera um certo desconforto na relação?   Todos se encaixam como mal pagadores?   Bom, poderá haver casos em que isso se faça realmente necessário!

Como disse, o cliente tem que ter a sensação de estar sendo prestigiado e isso é ponto positivo para você em relação a ele ao seu negócio.   Minha proposta, independente do prazo que você irá estipular para a renovação do registro, é montar um esquema de liberação automática (online) , sem que haja a intervenção do usuário.  Assista o meu vídeo e entenda a idéia!

Painel de controle pra você realizar testes.

De que adianta lhe mostrar tudo isso e você não ter a possibilidade de testar e assimilar a idéia do sistema online?  Então, montei uma área no meu site, onde você vai poder simular, testar e de fato aprender. 

Veja a imagem do painel de controle:

Registro Online

Aqui, você poderá registrar clientes fictícios e testar a liberação do software online.

O endereço para acessar o painel de controle:

http://www.usandoaccess.com.br/comum/login.asp

Resumo das formas de ataque:

um backup do programa após o registro;
cópia do arquivo externo que contém a chave;
cópia do registro do Windows;
tentativa de alteração dos dados da tabela e/ou do registro do Windows;
alteração do relógio do sistema.

Acima estão algumas das formas de se tentar burlar a defesa! Os fluxogramas apresentados no artigo sofreram alguns acréscimos que reforçam ainda mais a segurança do aplicativo e você poderá estudá-los nos arquivos que irei disponibilizar.

Atualização em 29/08/2013

Foi retirado do projeto o formulário frmWeb.  Este formulário foi substituído pelas funções de acesso a internet, usadas neste meu artigo sobre Capturando Data e Hora na Internet.

Baixar o arquivo exemplo

celula.zip

Ao término da instalação, você terá os seguintes arquivos:

celula.accdb  - Aplicativo exemplo;
fluxoValidação.  - Fluxograma de como foi montado o sistema de validação;
fluxoValidaçãoCom - Fluxograma de como foi montado o sistema de validação comercial (aluguel);
fluxoTempoEsgotado - Fluxograma de como foi montado o sistema de controle do tempo decorrido;
registroweb.asp - Pagina ASP contendo o código de controle de liberação online;
contrato.txt - Modelo do contrato de Licença de Uso.

Vídeo-aula

Nesta vídeo-aula você acompanhará, em detalhes, a técnica empregada no Access para enviar e capturar dados da internet.  Saberá como utilizar o Painel de Controle do meu site para a realização de testes de liberação de registro online.  E por fim, aprenderá como implementar, rapidamente, este sistema em seus aplicativos.


 

Faça o login aqui para ter acesso ao vídeo.


Sucesso!


 

 


68 comentários

Walter Pitarelli   08/10/2010 19:22:39

Isto que é ensinar a pescar... e não dar o peixe pronto.
Muito bom este teu exemplo de shareware e o video tutorial.
Irei estudar muito este exemplo.
Obrigado por nos ajudar Avelino.

Márcio Melo - RJ   08/10/2010 22:59:36

Muito completo, nunca tive oportunidade de ver um trabalho desse nível, venho utilizando uma combinação com número de HD, os números de uma data completa inclusive os segundos, números que representa o nome do usuário, combino esses fatores junto com criptografia e deixo 10 créditos de utilização, depois disso forço colocar o código do registro, mas, preciso da chave que pode ser vista em sobre o programa e envio por E-mail ou vou pessoalmente na empresa, quando copiado para outro HD envio uma mensagem avisando que o programa foi registrado em outro pc, deixo uma combinação de teclas numa determinada tela para chamar meu próprio cracker. Gostei muito de sua idéia que ficou numa chave leve e bem prática com automatização e muita segurança para evitar burlar o registro. Parabéns pelo execelente trabalho desenvolvido... Sou mais Brasil!!!

silvio rodrigues   09/10/2010 07:26:52

Poxa que legal cara muito obrigado pelo conhecimento.

Plinio Mabesi   10/10/2010 22:43:04

Meu grande amigo Avelino...

A cada dia que passa fico ainda mais feliz em poder usufruir do material do site, além de ficar também bastante honrado em poder colaborar, participando ativamente desta distribuição de ensinamentos que vc iniciou.
Eu também estava ansioso para ver o resultado desta sua abordagem sobre o shareware, conforme já havia lhe dito antes. Como já era de se esperar ficou simplesmente fantástico.

Parabéns!!!

Avelino Sampaio   11/10/2010 07:16:34

Obrigado a todos pelo apoio.

Este foi um dos mais empolgantes tutoriais que já fiz, devido a riqueza de informações oferecidas.

Sucesso

Hudson Alves   11/10/2010 11:21:05

Avelino parabens novamente pelo Site... O MISTER M do access... tenho aprendido muito com o vc e o site em geral espero que tenha sucesso, pois ainda sim, vemos que o access é bastante ignorado por programadores que o acham uma ferramenta para preguicoso por ser orientado a objetos... mais conheco empresas muito lucrativas que seu softhware é em access... e com suas dicas vemos que é possivel fazer mais do que apenas relatorios bonitos...

Wellington Moreira   11/10/2010 13:57:12

Simplesmente fantástico o material disponibilizado, vou estudá-los para customizar os meus BD's e torná-los mais profissional. Parabéns Avelino !!!

Dilson - Altamira/PA   12/10/2010 12:38:45

Avelino, ficou show, nota 10 no BD 2003 PARABÉNS e obrigado pelas dicas de implementação.

Luís Augusto   13/10/2010 00:09:29

Parabéns Avelino, como sempre excelente! Muito obrigado por disponibilizar de seu conhecimento conosco.
Muito Sucesso!

Cléber   25/02/2011 11:48:34

Avelino! Muito obrigado por compartilhar conosco este excelente exemplo!
Como eu faço para adquirir os arquivos para o painel de controle?
Grato!

Avelino Sampaio   25/02/2011 15:33:36

Cleber,

Não é possível te fornecer este arquivos no momento.

Grato

Eriberto - Santo Estevão BA   09/03/2011 21:31:02

Parabéns Avelino! A cada dia fico mais surpreso com que o access pode nos propocionar, isso graças a você que tem nos passado isso de uma forma simplesmente magnifica... muito obrigado por ta partilhado seus conhecimantos conosco...

Sucessos pra você!!!

ROGIEL PEREIRA SILVA   15/03/2011 10:04:41

Oi Avelino, coloquei o arquivo celula (menos frmPrincipal) no meu Banco de Dados e Cadastrei dois usuarios no site mais disse que o primeiro que esta bloqueado e o segundo que não existe. Ai peguei se Bando de Dados ( Celula) e funcionou, o que esta acontecendo?

Roni Lupe   16/03/2011 08:08:35

Olá Avelino!

Novamente gostaria de parabeniza-lo por mais uma obra-prima criada por voce e agradecer por ter disponibilizado o exemplo e a video-aula para todos.
Apesar de achar o sistema completo, gostaria de saber se é possivel informar, após o registro, o nome do cliente no mesmo campo que é informado que o programa esta registrado, ou seja, em vez de informar apenas "Registrado...", informar "Registrado Para Roni Lupe" por exemplo.

Abraço e mais sucesso!

Avelino Sampaio   16/03/2011 09:14:02

Rogiel,

Mantenha o formulário frmWEB visível e veja se o site está sendo aberto para capturar o registro. Tente então analisar o comportamento do seu BD com o site através de form frmWeb.

Roni,

Assim como é capturado o número de registro do site é possivel capturar o nome do usuário. Capturando o nome do usuário, vc guarda em uma tabela específica. Sempre que carregar o bd, passe então a carregar o nome do cliente desta tabela.

Roni Lupe   22/03/2011 09:48:54

Valeu Avelino,

vou tentar e te retorno se conseguir.

Roni Lupe   28/03/2011 13:35:26

Olá!

Avelino,

estou adaptando esse exemplo em um dos meus projetos, porém, não sou muito familiarizado com a liguagem HTML. Ja consegui desenvolver algumas coisas na Web que to criando especialmente para vender meus programas, mas travei na pagina onde faço os cadastros dos clientes. Se não for pedir demais, você poderia disponibilizar num arquivo "txt" os codigos que voce usou para criar essa pagina para fazermos nossos testes?

Eu ficaria imensamente agradecido a voce, pois isso me levaria a um nivel profissional muito superior ao que tenho hoje.

Desde ja, muito obrigado!

Sucessssooooooooo!

Avelino Sampaio   31/03/2011 16:59:28

Roni,

Me desculpe mas esta parte não é possível te disponibilizar. Procure no google sobre formulários em ASP que vc irá conseguir progredir.

Sucesso

Carlos Henrique Frade   15/04/2011 09:28:18

Gostaria de saber como fazer para limitar o uso do programa durante um periodo aquisitivo, exemplo

elaborei um programa de cadastro no access 2007, gostaria de por as ribbons, gerenciamento de usuario, chave de ativação com validade de um ano, por exemplo.

as ribbons eu pretendo comprar o seu monta ribbons assim que receber meu pagamento,

porem a dificuldade a meu ver é colocar um gerenciiamento de usuario, um pra alterar o design do programa o adm, e o outro para cadastrar e editar contatos apenas.

quero tambem colocar o contrato de licença com ativação offline apenas, onde ele gere o numero, dai eu repasso o outro que ira ativar, igual ao exemplo acima, e assim que ativar ele dure 365 dias ate a proxima renovação.

gostaria de pedir se não for incomodo, uma proxima matéria, que é colocar um relógio que atualize constantemente no formulário, e talvez com um campo que registre o dia e a hora que o contato foi gravado.

Meus sinceros parabéns pelo seu belo trabalho em prol da divulgação de seus conhecimentos, espero um dia ter esta capacidade para aplicar em meu projeto e quem sabe ajudar outras pessoas.

Sct   30/05/2011 20:20:34

Otimo

Roni Lupe   15/06/2011 13:30:58

Olá!

Avelino,

alterei a linha abaixo que estava com validade para 10 dias e coloquei para 30 dias, ficou assim:
If fncValidade(30) = False Then
zerei o registro, porém, continua retornando 10 dias de validade.
também configurei para o frmWeb abrir de forma oculta conforme voce explica na video-aula, mas também nao funcionou, continua exibindo o formulario.

Tem alguma outra alteração que eu preciso fazer para que ambas as funções funcionem corretamente?

Abraço!

Roni Lupe   15/06/2011 14:00:00

Avelino,

depois de refazer a lição de casa consegui resolver o problema do tempo de validade.

Sucesso!

Avelino Sampaio   15/06/2011 19:01:51

Ok Roni e sucesso!

Weverson Alves   10/08/2011 09:42:11

Avelino tem como converter para o Visual Studio 2008 este projeto célula?

muito obrigado por sua atenção e muito sucesso para vc.

ótimo projeto muito bom.

Avelino Sampaio   15/08/2011 05:16:15

Weverson

Eu não conheço nadinha do Visual Studio. Bom, ele serve tanto para criar o lado da web como para criar o lado do desktop, não é mesmo?

O lado da web vc pode usar qualquer linguagem(c, php, asp.net) com qualquer banco (mysql, SQL). Observe que eu forneço um arquivo em ASP, que usa ADO, para se conectar com um banco em Access.

O lado do desktop vc pode usar o vb.net, que se assemelha bastante com o VBA.

Sucesso!

Diego Liermann   13/10/2011 10:42:15

Olá, eu pretendo utilizar apenas o modo off-line de ativação, porém queria saber por onde começar, par alterar o prazo de validade do registro off-line para cada 40 dias, será que você poderia indicar um caminho por onde eu começo?

Já adquiri o seu Monta Ribbons V. 4.0, porém gostaria dessa força, se possível, já tentei recriar o outro modo de registro em meu serivdor dedicado, mais não tive sucesso, embora eu tenha instalado os drivers, criado a conexão pelo metodo DSN, inserido o codigo de conexão na página em asp que você forneceu, instalado o mysql, recriado as tabelas e forms, realmente ainda não obtive exito, sempre que clico registrar e ele vai checar a web, retorna com um erro 500, que aparentemente e erro no servidor.

Desculpe pelo texto ernome, então se puder dar uma força em relação ao modo off-line por 40 dias, eu fico grato.

Você já possui meu e-mail.

mais uma vez obrigado pela atenção.

Isaias Carvalho   02/11/2011 21:33:06

Olá Avelino,

Parabéns pelo fantástico tutorial Sistema Shareware com liberação online... Muito bom mesmo.

Você diz que podemos adaptar o célula em nossos projetos, Certo? No caso de uma adaptação em um projeto meu, jamais poderia usar o tipo de registro online! Não é mesmo? Pois, eu teria que ter um site com banco de dados dos clientes cadastrados.

No caso do registro off-line usando o gerador de registro é possível adaptar o célula em um projeto meu?

Adriano   09/01/2012 16:32:18

Ola Mestre Avelino!!

Sem Palavras para dizer, so sei que queria saber apenas 10% do que vc sabe de access,
estou começando ja faço uns programinhas, mas depois que entrou VB na parada to ficando
todo confuso com programação em access, mas ja deu pra entender bastante com sua explicação.
gostaria de adquirir o programa de fazer menus no access (ribons) se puder me envie um email
com detalhes. adrianoeaf@hotmail.com

Luis Araujo    26/03/2012 16:23:23

Parabens por tudo o seu conhecimento disponivel.

Uso em algunas coisas que faço com um pouco de trabalho.
Mas adoro tudo isto e lindo...

Bem falando de outro assunto.

Relativamente e este exemplo na parte que toca -> Painel de controle pra você realizar testes.


Como poderei eu fazer uma coisa destas para mim. Em programação Web Nao sei la munto ja tentei fazer alguns saites em html e joolma mas nada a fundo gosto mais do sistema access derivado a qualquer pessoa poder rodar com eles.

Se me pode-se dar alguma explicaçao de como poderei aprender a fazer .. umas luzes!

Comprimentos

luisperninhas@gmail.com

HELIO MACEDO DE FREITAS   05/04/2012 14:01:20

Olá Avelino

Adiquirir o Celula e quero implementlão em meu projeto que estou desenvolvendo usando o Maestro, porem me surgiu uma duvida, meu projeto irei
fornece-lo a clientes especificos, e os mesmos iram pagar por uma licença, o que gostaria de saber
se será possivel instalar o meu projeto e uma maquina, licencia-lo nesta maquina e depois usa-lo em rede, por meio de uma compartilhamento, ou será necessario uma licença para cada maquina?

Avelino Sampaio   08/04/2012 10:46:03

Helio,

melhor implementar o código somente na máquina licenciada. Nas outras vc monta a programação para verificar um status no BD licenciado e assim liberar o uso. Estou considerando que tens um bd em cada máquina.

Sucesso!

Mario Scandolera   06/05/2012 13:49:30

Avelino,
Adaptei o celula ao meu projeto, aparentemento tudo esta certo no registro, mas ao tentar registrar online, sempre mostra a mensagem registro bloqueado entre em contato. Ja conferi o painel de controle não esta bloqueado.
Mesmo utilizando o celula mostra a mesma mensagem.

Atenciosamente

Mario Scandolera

Ualace de Oliveira dos reis    08/09/2012 11:50:14

avelino, criei um formulário que acessa o "painel de Controle"...
gostaria que ele conctaçe em meu login automaticamente, no estilo que vc fez no exemplo:
http://www.usandoaccess.com.br/comum/time.asp?nome=avelino&time=fluminense
ai usei o seguinte link:
http://www.usandoaccess.com.br/comum/login.asp?email=meuemail&Senha=minhasenha
mas ele abre com o formulario do painel em branco.....
o que estou fazendo de errado?
obrigado... abração....

Avelino Sampaio   10/09/2012 05:17:00

Ualace,

entendo bem pouco de programação ASP. Creio que vc poderá utilizar o request, direto nas caixas de texto. Algo assim:

=request.queryString("email")
=request.queryString("senha")

Copie e cole o link abaixo, no seu navegador e estude o tópico.

Http://comunidade.itlab.com.br/eve/forums/a/tpc/f/273606921/m/6001073382?r=6001073382#6001073382

Sucesso!

Cosme Medrado   10/09/2012 19:34:14

Quero comprar o sistema de registro de programa. Como devo proceder.
Atenciosamente,
Medrado.

Avelino Sampaio   12/09/2012 08:03:52

Cosme,

todo o material está disponível no artigo, exceto a parte do site (painel de controle). Esta parte do site não está a venda. Foi feita apenas para realizar testes. Poderá deselvolver a parte do site (Painel de controle) , usando ASP, PHP ou outra linguagem que esteja familiarizado.

Sucesso!

Daniel _ Rondonopolis -MT   14/09/2012 22:49:10

Muito bom o site e as Dicas!
Excelente trabalho abordando esse assunto.

Campideli   24/09/2012 12:39:17

Caro Avelino, poderia me enviar a pagina "DataWeb.asp" Para que eu possa fazer testes em meu servidor? marcocampideli@hotmail.com

desde ja agradeço !!! Forte abraço !!!

Avelino Sampaio   25/09/2012 06:39:33

Campideli,

enviei para o seu email, o código ASP utilizado.

Sucesso!

Silva   01/10/2012 22:13:21

Avelino envia também a DataWeb.asp pra mim. cftvonline@yahoo.com.br, obrigado

Ronaldo da Costa Silva   01/12/2012 08:55:56

Avelino, por favor.

Estou com problema com o gerador de registro do célula. É que ele só gera número de registro para número de chave com 8 dígitos.
Tenho dois clientes que suas máquinas apresentam chave com 7 dígitos e assim não consigo registrar o aplicativo.

fabbio   30/12/2012 10:15:14

Caro Avelino, poderia me enviar a pagina "DataWeb.asp" Para que eu possa fazer testes em meu servidor? fabbiomonteiro82@gmail.com

desde ja agradeço !!! Forte abraço !!!

Avelino Sampaio   02/01/2013 10:54:39

Fabbio,

já enviei o arquivo para o seu email.

Sucesso!

Isaias Carvalho - Ba   22/02/2013 14:44:17

Avelino,

Fiz as alterações nos modolos para deixar o formulario invisível... Não foncionou

DoCmd.OpenForm "frmWeb", , , , , acHidden + acDialog, 5
DoCmd.OpenForm "frmWeb", , , , , acHidden, 5
DoCmd.OpenForm "frmWeb", , , , , acHidden + acDialog, 5

Continua aparecendo.

Alessandro Batistuti   22/02/2013 23:05:23

Caro Avelino, poderia me enviar a pagina "registroweb.asp" e a "DataWeb.asp" para eu fazer uns testes no meu servidor ? batistuti@gmail.com
desde já agradeço, Abraço...

Tiago   10/06/2013 11:28:04

Caro Avelino, meus parabéns, excelente trabalho!!!

Tenho algumas perguntas.
Existe alguma possibilidade da função 'fncChaveHD()' retornar um número repetido para computadores diferentes?

Você já fez algo com integração automática de confirmação de pagamento através de boleto, pagseguro ou paypal? Por exemplo, o celula iria gerar o boleto e sua aplicação web verificaria a confirmação do pagamento liberando o uso do software por mais X dias de acordo com o pagamento efetuado?

Vi que usa o registro do Current User, ao invés do Local Machine. Seria por causa do controle de contas de usuários (UAC) que se estiver ligado, impede a gravação no HKLM?

abs.

Avelino Sampaio   11/06/2013 06:35:18

Tiago,

Quando o HD é formatado, é gerado um novo número lógico. Portanto não haverá repetições deste número entre as suas máquinas.

Nunca fiz qualquer integração com o pagseguro ou Paypal.

Isso, por causa do UAC da erro na tentativa de grava no registro. Dificilmente é visto um micro sendo utilizado por mais de um usuário, então não vejo grandes problemas no uso do Current User.

Sucesso!



Cledson   12/08/2013 21:12:11

Avelino,
primeiramente muito obrigado pelo material. Gostaria de perguntar se você já testou o sistema de registro no access runtime 2007 ? Eu adaptei ao meu projeto, porém só funcionar onde tem o access instalado com a versão runtime, o sistema é registrado, mas ao entrar no sistema apresenta um erro critico e fecha o sistema automaticamente.

Walter Pitarelli   29/08/2013 23:25:49

Avelino,
Você disponibilizou um arquivo chamando registroweb.asp junto com o Celula. Agora eu estou pagando por um domino com asp, mas não sei o que fazer para conectar o arquivo (ASP) com o meu BD. Não preciso de algo pronto, só me ensine o caminho das pedras para que eu possa estudar e colocar o meu aplicativo com registro na web, como fiz no seu site.
Grato

Parabéns pelos ótimos artigos e exemplos que nos tem proporcionado.

Avelino Sampaio   30/08/2013 03:39:18

Walter,

você tem que aprender a usar o ADO. No exemplo que forneci tem uma linha de chamada que é "call abre_conexao_rw". Vc deve substituir esta linha pelo comando de abertura do seu banco, conforme exemplo abaixo:

set conexao = server.createObject("ADODB.connection")
conexao.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=LocalFísicoDoSeuBanco\SeuBanco.mdb;"

ou

conexao.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("...\SuaPasta\Seubanco.mdb")

Verifique no help do seu provedor qual a forma correta de se conectar ao seu MDB(ACCDB).

Sucesso!

Walter Pitarelli   30/08/2013 10:16:21

Avelino,
tal linha não existe na página ASP que disponibiliza. Segue abaixo o que está no arquivo registroweb.asp.

call abre_conexao_rw
set rs = CreateObject("ADODB.Recordset")
set rs.activeconnection = conexaorw
rs.CursorType = adOpenDynamic
rs.LockType = adLockOptimistic
rs.open mysql , , , , adCmdText

Abraços

Avelino Sampaio   02/09/2013 03:21:15

Walter,

é só juntar as peças. Veja:

set conexaorw = server.createObject("ADODB.connection")
conexaorw.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=LocalFísicoDoSeuBanco\SeuBanco.mdb;"
set rs = CreateObject("ADODB.Recordset")
set rs.activeconnection = conexaorw
rs.CursorType = adOpenDynamic
rs.LockType = adLockOptimistic
rs.open mysql , , , , adCmdText

Sucesso!

Walter Florencio   19/11/2013 22:47:39

Avelino, boa noite. Na dúvida acima, do xará Walter, vc ensina como conectar ao banco .accdb. Minha pergunta é. Este banco é o do nosso sistema, ou é o banco que é criado no site para validar o email e a data de nascimento? Se for a segunda opção, o banco no site pode ser mysql, ou tem de ser em access. Obrigado.

Giovanny Oliveira   20/01/2014 14:00:15

Caro Avelino,testei instalação do aplicativo celula em minhas maquina,apareceu "erro de automação"
e nao abre o aplicativo.

Configuração da Maquina > Windows XP SP3

Avelino Sampaio   21/01/2014 08:11:15

Giovanny,

peço desculpas pois não tenho mais a versão XP para realizar um teste. De qualquer forma irei revisar os códigos.

Por um acaso o erro mostra a parte do código com o problema (marcado de amarelo). Se sim, copie e cole aqui a parte que apresenta o erro.

No aguardo

Giovanny   21/01/2014 08:27:17

Não,ele não direciona o erro para o codígo.
Irei colocar um Break no Modulo na primeira função para poder ver aonde esta o erro.
e posto,para compartilhar deste ocorrido.

Allyson Camilo   10/05/2015 00:06:48

Avelino bom dia, esse sistema de registro e validação que esta apresentado acima esta a venda ?

Avelino Sampaio   11/05/2015 06:15:29

Allyson,

não esta a venda. O aplicativo é gratuito mas o painel de controle é apenas para testes.

Bom estudo!


Allyson Camilo   11/05/2015 18:13:11

Pelo registro offline tem como determinar tempo de uso da aplicação ?

Walter Florêncio   14/05/2015 17:25:22

Olá Avelino. Boa tarde. Já uso seu módulo de registro a algum tempo e a data e hora era verificada em sua página. No entanto resolvi mudar para a minha página, porém a função fncSiteAtivo sempre retorna que o site não está ativo. Testei com o www.google.com e com outros endereços e sempre deu certo, porém com o meu endereço nunca dá ativo. Porque será? Informo que se eu deixo que a função verifique o seu site e em seguida faço a captura pela página do meu site a data e hora retornam normalmente. Alguma dica?

Avelino Sampaio   15/05/2015 05:23:45

Walter

escreve o seu endereço aqui pela seção CONTATO do site, para eu poder realizar um teste.

No aguardo

Marcelo   20/02/2016 12:13:21

Bom dia Avelino
adiqueri seu aplicativo montaRibb eu fiz um sistema folha de pagamento instalado no meu cliente rodando em rede agora estou com dificuldade de colocar o tempo limite de uso pelo HD sendo que o Front cada um em uma maquina como proceder nesse caso


Me da uima força ai nesse caso

no Aguardo

Carlos Alberto Gomes de Oliveira   11/11/2016 21:32:01

Boa noite Avelino

Gostaria de dar meu depoimento sobre seu material de aprendizado "Usando Access":

"E X C E L E N T E !!!"

Já indiquei para amigos no trabalho e um adquiriu hoje o Kit. Tá empolgado e confiante que o aprendizado será excelente.

Bom trabalho Avelino.

Carlos Alberto Gomes de Oliveira   11/11/2016 21:34:32

Avelino

Teremos como verificar se a aplicação está instalada em outra unidade que não seja o C:?

Mesmo que a instalação seja direcionada para unidade C:, caso tenha um outro sistema operacional a letra é alterada e a aplicação poderá ser utilizada de forma duplicada, pois o HD poderá estar particionado e ser o mesmo. Estou certo?

Wellington Araujo   23/11/2016 11:41:17

Avelino Grande mestre, pegue o sistema para estudar porem esta dando Erro 438..O objeto não aceita esta propriedade ou método - o erro converge para a linha - fncCapturaDataWeb = Nz(objIE.Document.getElementById("rg").Value, 10) - Não estou conseguindo identificar o que pode estar ocorrendo.....seria alguma configuração extra.

Obrigado pela suas constantes contribuições aprendi muito neste site com você...

florindo   03/03/2017 03:33:39

Caro Avelino, excelente trabalho e agradeço pelas dicas deixada por vc tem ajudado bastante.

porgentileza poderia envia o codigo fonte da pagina "registroweb.asp" e a "DataWeb.asp" para eu fazer uns testes no meu servidor ? florydiasso@gmail.com
desde já agradeço, Abraço.

florindo   03/03/2017 03:35:51

Caro Avelino, excelente trabalho e agradeço pelas dicas deixada por vc tem ajudado bastante.

porgentileza poderia envia o codigo fonte da pagina "registroweb.asp" e a "DataWeb.asp" para eu fazer uns testes no meu servidor ? florydiasso@gmail.com
desde já agradeço, Abraço.

Felippe Robadey França   18/04/2017 12:32:24

Boa tarde prezado Avelino,

Muito bom todo o conteúdo, sou um curioso no access, e estou aprendendo muito com vc. Assistindo ao vídeo, não entendi como configurar o OPEN pelo Istool, isto é, configurar o atalho do Open na área de trabalho. Aguardo retorno.
meu e-mail: felippe_franca@yahoo.com.br

Desde já agradeço



Envie seu comentário: