RECOMPILACAO EM RUNTIME

GABRIEL.LOGAN 06/04/2005 13:36:14
#77004
Gente, eu tenho um arquivo EXE, ate ai tudo bem.

Nesse arquivo eu tenho um Botão e um textBox, onde o textbox.caption é "". Eu quero que quando eu clico no botão ai o programa se auto grava a TextBox.Caption "teste" , ai toda vez que eu abrir o programa eu vou ver a TextBox.Caption "teste". Acho que o nome disso é Re-Compilação, neh? Da pra fazzer isso? Como faço?
USUARIO.EXCLUIDOS 06/04/2005 14:05:46
#77010
Resposta escolhida
Para fazer isto que você está querendo (desta forma), vc teria de passar o compilador e o código fonte junto com o seu executável...

algumas alternativas bem razoáveis de "enganar" o executável
a) colocar o click do botão em algum lugar
- registrar no registry / arquito texto / banco de dados

b) alterar o executável mas deixar o código preparado
- adicionar um tipo de marca dÂÂÂ'água ao fim do arquivo (como colocar VBMANIA em binário ao final do exe) - e verificar se a palavra está lá - se estiver, colocar o texto que vc quer

independente do que vc fizer, sempre tem um jeito de enganar o software
GABRIEL.LOGAN 06/04/2005 16:10:07
#77033
BRUNO, vou dizer diretamente o que eu quero, pra não darmos voltas. BRUNO, eu estou desenvolvendo um sistema onde eu quero fazer um contador de 30 dias apos esses 30 dias o programa so abre com o SERIAL. Para isso eu quero fazer com que o executável grave no TextBox invisível a quantidade de dias decoridos, isso ajuda para que a pessoa não burle o programa. Para mim fazer isso eu teria que gravar em cima da EXE, como posso fazer? Teria que tipo Compilar novamente a EXE mais a informação sem o VB. Alguem sabe fazer isso?
USUARIO.EXCLUIDOS 06/04/2005 16:56:07
#77047
Citação:

b) alterar o executável mas deixar o código preparado
- adicionar um tipo de marca dÂÂÂ'água ao fim do arquivo (como colocar VBMANIA em binário ao final do exe) - e verificar se a palavra está lá - se estiver, colocar o texto que vc quer



Bruno, como é isso?
WEBMASTER 06/04/2005 17:42:07
#77054
Não é mais fácil ler um ini ???[S51]
GABRIEL.LOGAN 06/04/2005 18:34:57
#77067
Se eu usar um INI ai o camarada pode modificar facilmente.
USUARIO.EXCLUIDOS 06/04/2005 21:08:47
#77084
Já tive de fazer algo semelhante ...
Citação:

apos esses 30 dias o programa so abre com o SERIAL

... e resolvi da seguinte forma:
- gravei a informação "data e hora" da utilização do programa num ficheiro usando simplesmente "open ... for append as ...".
- gravo esse ficheiro na pasta Windows\System com um nome que pareça nome de ficheiro do sistema, tipo spool.sys.
- no Load do meu programa, verifico a data actual, e comparo com a data gravada nesse ficheiro...a partir daí já se sabe...
Como faço append e não input, invalido logo desde inicio, a hipotese do usuário tentar usar o programa alterando a hora do sistema.

é claro, que parto sempre do principio, que o usuário não vai formatar o disco.

Eu sei que isto não responde à  sua questão (a qual também gostava de ter resposta), mas que funciona...até funciona...
USUARIO.EXCLUIDOS 07/04/2005 07:46:31
#77105
A solução apresentada pelo BrunoMachado é extremamente viável, com algumas implementações.

Primeiraimente, você deveria criar um algoritmo que gravasse o valor no final do arquivo. Esse programa teria que ler toda a estrutura do exe e o dado a ser gravado e encontrar uma sequencia de bytes que NÃO EXISTA NO ARQUIVO, para evitar ler no lugar errado. Essa sequencia tem que ter um tamanho definido, tipo, uma string de 8 caracteres. Dai, você gravaria no arquivo, essa string, o dado que vocÃÅ  quer gravar, a string novamente, o crc, e novamente a string.

pro caso da data ficaria mais ou menos assim

STRINGTESTE11/04/2005STRINGTESTE[CRC32DOEXE]STRINGTESTE

Dai, quando fosse executar o programa, ele leria quais são os ultimos 11 caracteres( lenght de "STRINGTESTE", que tem que ser pre-definido), dai ele procuraria no exe inteiro onde é o primeiro registro dessa string, o que viesse depois ateh a proxima ocorrencia, seria a data; dai o que viesse depois da segunda ocorrencia seria o CRC, para evitar que o usuário corrompesse o arquivo com sua própria data assim hackeando o EXE (claro que não é o melhor método, tem melhores). Aliás, em vez do CRC pode-se usar até outro método de CheckSum, menos conhecido.

Lembre-se que STRINGTESTE não pode estar em nenhuma outra parte do EXE, e deve ficar no final para o EXE compilado saber qual é STRINGTESTE.

Não vou criar um exemplo agora, pois no pc onde estou o vb não funciona direito.
Tópico encerrado , respostas não são mais permitidas