RECOMPILACAO EM RUNTIME
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?
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?
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
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
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?
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?
Não é mais fácil ler um ini ???[S51]
Se eu usar um INI ai o camarada pode modificar facilmente.
Já tive de fazer algo semelhante ...
- 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...
Citação:... e resolvi da seguinte forma:apos esses 30 dias o programa so abre com o SERIAL
- 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...
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.
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