|
||
|
|
|
Avaliação:
![]() ![]() ![]() ![]() | Publicado em: 05/10/2006Execute sua Aplicação Automaticamente ao Iniciar o Windows
Rafael Lemos é Bacharel em Ciência da Computação, tem experiência em C/C++, PHP, JavaScript, HTML e trabalha com DELPHI/INTERBASE há 2 anos.
Olá amigos!
Neste artigo discutiremos como fazer para alterar o registro do Windows permitindo que o seu programa seja executado automaticamente na inicialização. A principal vantagem de se usar essa técnina é fazer com que o seu aplicativo rode automaticamente como um serviço do Windows. Antes de começarmos gostaria de lembrar que é necessário muito cuidado ao lidar com o Registro do Windows pois uma alteração incorreta pode prejudicar o funcionameto do Sistema Operacional ou de outros programas, sendo que eu não me responsabilizo pelo mal uso das informações contidas aqui. Implementação: Neste exemplo criaremos duas procedures, GravaRegistro e ApagaRegistro, para adicionar e remover o registro do windows respectivamente. Para podermos trabalhar com o registro usaremos a classe TRegistry, que se encontra na unit Registry que deveremos adicionar na cláusula uses. uses ...Windows, StdCtrls, Registry; Em seguida criaremos a procedure GravaRegistro, contendo os seguintes parâmetros: procedure GravaRegistro(Raiz: HKEY; Chave, Valor, Endereco: string); Onde: -Raiz (HKEY): Aqui definimos a chave raiz onde o registro será adicionado. As chaves que podem ser usadas no nosso exemplo são HKEY_CURRENT_USER (as alterações feitas aqui só afetarão o usuário logado), HKEY_LOCAL_MACHINE (as alterações afetarão qualquer usuário). -Chave (String): No nosso exemplo usaremos a Chave "Software\Microsoft\Windows\CurrentVersion\Run" , que é a chave onde se aplicam os programas que devem ser executados na inicialização do Windows. -Valor (String): É simplesmente o nome do valor do campo que será adicionado. -Endereço (String): É o endereço do executável que será carregado na inicialização. Segue a implementação da procedure GravaRegistro: procedure TForm1.GravaRegistro(Raiz: HKEY; Chave, Valor, Endereco: string); var Registro: TRegistry; begin Registro := TRegistry.Create(KEY_WRITE); // Chama o construtor do objeto Registro.RootKey := Raiz; //Define a chave raiz Registro.OpenKey(Chave, True); //Cria a chave Registro.WriteString(Valor, '"' + Endereco + '"'); //Grava o endereço da sua aplicação no Registro Registro.CloseKey; // Fecha a chave e o objeto Registro.Free; end; Agora implementaremos a procedure ApagaRegistro, que terá os mesmo parâmetros que GravaResgistro menos o "Endereco", que não será necessário nesse caso. procedure ApagaRegistro(Raiz: HKEY; Chave, Valor : string); Segue a implementação da procedure ApagaRegistro: procedure TForm1.ApagaRegistro(Raiz: HKEY; Chave, Valor: string); var Registro: TRegistry; begin Registro := TRegistry.Create(KEY_WRITE); // Chama o construtor do objeto Registro.RootKey := Raiz; Registro.OpenKey(Chave, True); //Cria a chave Registro.DeleteValue(Valor); //Grava o endereço da sua aplicação no Registro Registro.CloseKey; // Fecha a chave e o objeto Registro.Free; end; Agora criaremos dois botões, um para realizar a gravação no registro e outra para a remoção, respectivamente. procedure TForm1.BitBtn1Click(Sender: TObject); begin try GravaRegistro(HKEY_LOCAL_MACHINE, 'Software\Microsoft\Windows\CurrentVersion\Run', 'IniciarPrograma', ExtractFilePath(Application.ExeName) + 'TesteRegistro.exe'); MessageDlg('Registro gravado com sucesso!', mtInformation, [mbOk], 0); except MessageDlg('Erro ao gravar registro!', mtInformation, [mbOk], 0); end; end; procedure TForm1.BitBtn2Click(Sender: TObject); begin try ApagaRegistro(HKEY_LOCAL_MACHINE, 'Software\Microsoft\Windows\CurrentVersion\Run', 'IniciarPrograma'); MessageDlg('Registro apagado com sucesso!', mtInformation, [mbOk], 0); except MessageDlg('Erro ao apagar registro!', mtInformation, [mbOk], 0); end; end; E pronto! Agora é só testar a sua aplicação. Clicando no primeiro botão iremos adicionar nosso programa à lista de inicialização do Windows, tendo feito isso você pode efetuar logoff e assim que o windows for iniciado novamente o seu programa será executado automaticamente. Para remover o registro de forma que o seu programa não seja executado na próxima inicialização basta clicar no segundo botão. Espero que este artigo tenha sido útil, o código-fonte encontra-se disponível logo abaixo. Obrigado. Arquivos anexos ao artigo
Artigos relacionados
Magno Biét <magno_designer@hotmail.com>
num era mais facil colocar um atalho do programa na pasta Inicializar
C:Documents and SettingsAll UsersMenu IniciarProgramasInicializar ![]() ![]() ![]() ![]() ![]() Bruno Leonardo
Gostei bastante do código apesar de ainda não ter testado. É perfeito para o q estou tentando fazer, pois preciso iniciar uma determinada aplicação que fique rodando todo o tempo, e não posso deixar q ela apareça na lista do task manager.
![]() ![]() ![]() ![]() ![]() desconhecido
Parabens Refael. nao programo em delphi. é para um funcionario o exemplo. porem. acho que é sério seu exemplo.
Grande abraço Amarildo AACB Sistemas e Negocios. ![]() ![]() ![]() ![]() ![]() Pedro
Parabéns pelo artigo. E citando o Magno Biét: Cara, deixa de ser burro! O cara explicou como vc faz para seu software se registrar ou registra alguma coisa automaticamente. Caba BURRO!
![]() ![]() ![]() ![]() ![]() Solano Lopes <solaninho@yahoo.com.br>
to com uma duvida Rafael!!!
Gostaria de saber como eu posso alterar o registro por uma CheckBox. vou colocar duas opções de alterações q gostaria de fazer. 1. HKEY_CURRENT_USERControl PanelDesktop "MenuShowDelay"="100" 2. HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerAdvanced "EnableBalloonTips"=dword:00000000 1. queria colocar 3 CheckBox sendo q a 1ª CheckBox qdo fosse marcada ela selecione todas as outras CheckBox. 2. 1 botão para aplicar as CheckBox selecionadas. OBS.: tem como essas CheckBox ficar inteligentes tipo , quando eu abrir o formulario ela identificar quais as aplicações já estão em uso. ficarei muito agradecido ![]() ![]() ![]() ![]() ![]() Flávio <flavio@z6-solucoes.com>
Interessante o artigo, parabéns.
Porém, se não estiver enganado esse fonte fará apenas que o sistema se executado na inicialização do windows. Precisa de algo que ficasse rodando o tempo inteiro na integra. ![]() ![]() ![]() ![]() ![]() William <william@wil.com>
Mto bom, enclusive a explicação
![]() ![]() ![]() ![]() ![]() MARCOS <marquinhosmil@hotmail.com>
Não há uma forma de colocar um programa para inicializar junto com o Windows sem precisar utilizar o Delphi pra criar esse "programinha" aí?
Gostaríamos de saber uma forma simples, somente editando alguma chave do registro e pronto. Mas valeu pela dica! ![]() ![]() ![]() ![]() ![]() Analista <analista@oo.com.br>
Excelente artigo, parabéns.
Agora com relação a alguns comentários, me divirto muito lendo isso. Cada um que PQP !!! kkkkkkkk ![]() ![]() ![]() ![]() ![]() Plinio Cruz <plinio.cruz@clubedainformatica.com.br>
Muito bom, gostaria de publicar esse artigo com os devidos créditos e banner do site no site do Clube, entre em contato.
![]() ![]() ![]() ![]() ![]() Jason <jasonthiago@gmail.com>
Boa tarde, estou precisano muito desse recurso, porém, não sei programar no Delphi, programo em c, mas não consegui passar esse codigo pra c, alguem teria esse codigo em c?
Obrigado ![]() ![]() ![]() ![]() ![]() josy <josykyt@hotmail.com>
meu pc pegou um troia e ficou ligando e desl ai fiz procedimentos p mover p quarentena depois queando ligo ele aparece uma tela preta e deseja iniciar no modo seguro,ultima atualizaçao.e fala de uma tal de bios me ajude o que faço com meu pc ele liga e depois de 5 minutos desliga me manda um e mail de resp
![]() ![]() ![]() ![]() ![]() josé carlos <j.carlos dutra @terra.com.br>
é bom quando precisamos de ajuda e encontramos. é mesmo muito bom!
![]() ![]() ![]() ![]() ![]() ![]() |
|
|
|