Artigo extraido do site: www.planetadelphi.com.br
Gerenciando Itens da Inicialização
Criar uma Nova Aplicação:
|
Declarando as Units a serem usadas |
Vamos declarar a principal Unit de nossa aplicação, era será responsável pela entrada e obtenção de dados do registro do Windows, uma Unit bem conhecida a Registry.
|
Inserindo os Componente no Form |
Nossa Aplicação terá o seguinte visual:
Usaremos os seguintes componentes:
- Imagelist
Panel
GroupBox
ListView
Edit
Button
Vamos a inserção dos itens:
Troque a cor do FORM para Branco.
Insira um Panel com a cor BRANCA, vamos colocar dentro dele um Image, com a seguinte figura:
Agora coloque um Label com o Caption Itens Iniciados com o sistema.
Ele ficará dessa forma:
Vamos colocar um GroupBox e dentro dele um ListView:
Vamos trocar as seguintes propriedades do ListView:
Para isso, selecione-o e vá até o Object Inspector:
|
Propriedade
|
Novo Valor
|
Comentário
|
|
Ctl3D |
False |
Visual |
|
GridLines |
True |
Exibe linhas na ListView |
|
ReadOnly |
True |
Não deixa que alguém sobrescreva um item, edite um item. |
|
RowSelect |
True |
Deixa que o usuário selecione um item |
|
SortType |
StText |
Para que coloquemos textos no listView |
|
ViewStyle |
VsReport |
Modo de Exibição Detalhes |
|
Name |
LV |
Trocamos o nome dele para LV |
|
Color |
$00FFF4EA |
Trocarmos a cor para um azul claro ... |
Nosso ListView ficará dessa forma:
Agora vamos inserir duas colunas no nosso ListView, uma será a coluna NOME onde terá o nome da entrada, do programa que está iniciando juntamente com o Windows a outra coluna terá o Valor, ou seja o diretório desse programa ou arquivo que está iniciando.
Para isso dê dois clicks sobre o ListView:
Clique sobre o botão ADD NEW.
Assim ele vai criar o item 0 - TListColumn nossa primeira coluna, selecione esse item e vá até o Object Inspector e troque as seguintes propriedades dele:
|
Propriedade |
Novo Valor |
Comentário |
|
Caption |
Nome |
|
|
MaxWidth |
130 |
O Tamanho máximo dele será 130 px |
|
Width |
130 |
E o Tamanho predefinido também será 130 px. |
Clique novamente no botão ADD NEW para Adicionarmos outra Coluna, e troque as propriedades dela da seguinte forma:
|
Propriedade |
Valor |
|
Caption |
Valor |
|
MaxWidth |
248 |
|
Width |
248 |
|
Atenção: Estes tamanho vão de acordo com sua necessidade, troque-os da forma que desejares. |
|
|
|
|
Nossa listView ficará desta forma:
|
|
Insira um GroupBox abaixo do GroupBox do ListView e vamos inserir nele os seguintes componentes: Button, Edit, Caption >> Da forma que nos mostra a figura abaixo:
O Edit que se encontra do lado do Caption NOME terá o seguinte nome: TXTNAM O Edit do caption VALOR terá o seguinte nome: TXTVALUE
|
|
|
|
Declarando Variáveis Globais e a Procedure LoadScreen |
Bom pessoal vamos declarar duas variáveis globais:
|
var Form1: TForm1;
//Responsável para dar entrada no registro ...
Reg: TRegistry;
{Declaramos essa Variável "KEY1" Global, pelo seguinte fato: Nela ficará armazenada o seguinte valor: ""\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"" ou seja é a chave responsável por armazenar os itens da inicialização. Abriremos a mesma para obter os valores da inicialização}
Key1: string;
implementation
|
Agora vamos declarar a procedure responsável para dar um LOAD nos itens da inicialização e jogar dentro do ListView.
|
Private { Private declarations } procedure LoadScreen;
|
|
implementation
{$R *.dfm}
procedure TForm1.LoadScreen;
{Nós usaremos uma variável do Tipo TStringList para podermos Enumerar todos os valores da chave} var Values: TStringList; {Precisaremos também de um índice para nosso StringList} i: Integer; begin {Instanciando a nossa variável} Values := TStringList.Create; {Agora vamos ajustar a chave Raíz do registro} Reg.RootKey := HKEY_LOCAL_MACHINE; {Iremos abrir uma chave do registro, o método OpenKey faz Isso para nós, ele vai abrir a CHAVE que estiver armazenada dentro da Variável Global KEY1, o valor de KEY1 será definido no evento OnCreate do sistema, como "\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", ou seja ele vai abrir essa chave e obter todos os valores, esses valores são os items que se iniciam no sistema} if Reg.OpenKey(Key1, False) then begin { Achamos os valores, então vamos colocar tudo dentro da variável Values que tem o tipo de dado StringList } {Vamos dar um GET, vamos obter esses valores então ...} Reg.GetValueNames(values); {Pronto já demos um GET, pegamos os valores, agora vamos inserir esses valores dentro do ListView} LV.Clear; for i := 0 to Values.Count - 1 do begin with LV.Items.Add do begin Caption := Values[i]; {Pega o valor correspondente Values[i]} SubItems.Add(Reg.ReadString(Values[i])); end; end; {Finally - fecha a chave} Reg.CloseKey; end; Values.Free; end; |
Evento ONCREATE do FORM
|
procedure Tform1.FormCreate(Sender: TObject); begin Reg := TRegistry.Create; {Definimos a chave para KEY1, essa que será usada pelo procedimento (LoadSreen) e aberta para obtenção dos dados da inicialização do sistema} Key1 := '\SOFTWARE\Microsoft\Windows\CurrentVersion\Run'; {Vamos executar o procedimento acima criado, para darmos um Load,e jogar todos os dados para o ListView} LoadScreen; end;
|
Evento ONCLICK do botão Adicionar Valor:
|
procedure Tform1.btnAddClick(Sender: TObject); begin {Agora vamos escrever um valor dentro do registro, ou seja na inicialização do sitema, se vc quer que um programa inicie, so colocar o nome do mesmo e seus diretório ...} txtNam.Color := clWhite; txtNam.Font.Color := clBlack; txtValue.Color := clWhite; txtValue.Font.Color := clBlack; if Trim(txtNam.Text) = '' then begin {Se ñ tiver tiver valor nehum no campo Nome Da um Showmessage Alertando e troca a cor de fundo do Edit Nome para vermelho ...} MessageDlg('Sem nenhum valor para ser Adicionado', mtError, [mbOK], 0); txtNam.Color := clRed; txtNam.Font.Color := clYellow; txtNam.SetFocus; Exit; end; if Trim(txtValue.Text) = '' then begin {Mesma coisa aqui se ñ tiver nenhum valor ele dar um Showmessage e troca a cor de fundo do edi para Vermelho ...} MessageDlg('Sem nehum valor para o diretório do EXE ...', mtError, [mbOK], 0); txtValue.Color := clRed; txtValue.Font.Color := clYellow; txtValue.SetFocus; Exit; end; {Caso tudo preenchido, então vamos ADD os valores ao Registro ...} if Reg.OpenKey(Key1, False) then begin //Escreve o valor no registro ... Reg.WriteString(Trim(txtNam.Text), Trim(txtValue.Text)); //Fecha a chave aberta Reg.CloseKey; //DA uma load nos itens de inicialização, Atualiza os itens do listview .. LoadScreen; end; end;
|
Evento OnClick do Deletar Item
|
procedure Tform1.BtnDelClick(Sender: TObject); {Para deletarmos um valor do registro, primeiramente precisaremos saber o nome do mesmo, então por isso iremos declarar esta variável NAM nele será armazenado o valor do item que estiver selecionado no ListView, Dessa forma excluiremos ele} var Nam: string; begin {Vamos fazer uma condição para vermos se tem algum item selecionado na listView ...} if LV.SelCount < 1 then begin MessageDlg('Nenhum Item Selecionado para deletar.', mtError, [mbOK], 0); Exit; end; {abriremos a Chave Raíz do registro HKEY_LOCAL_MACHINE } Reg.RootKey := HKEY_LOCAL_MACHINE;
{Vamos abrir a chave correspondente aos items da inicialização do sistema "\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" que se encontra na Variável Global KEY1 que foi defifinida na inicialização do Sistema.} if Reg.OpenKey(Key1, False) then begin
{A Variável NAM terá o valor do item selecionado no ListView, para podermos Ecluir ela do registro, na inicialização ...} Nam := LV.Selected.Caption;
{Deleta o item Selecionado} Reg.DeleteValue(Nam); {Fecha a Chave} Reg.CloseKey; {Daremos um LOAD nos items da Chave KEY, que são os items da inicialização, porq excluímos uma chave agora, então Nosso lisiview será atualizado conforme os valores do registro.} LoadScreen; end end;
|
Evento Onclick do botão Fechar
|
procedure TForm1.Button1Click(Sender: TObject); begin close; end;
|
|
Print da Aplicação e Código fonte |
Bom pessoal, com este simples artigo podemos fazer outras coisinhas legais, tipo verificar se um item da inicialização contém vírus, usando seu próprio Antivírus, o kara seleciona o Item da Inicialização, e pede pra verificar, damos um ShellExecute linkando para seu antivírus e fazendo com que ele verifique essa entrada ou seja o Valor dela que neste caso será o diretório do Arquivo.
Vou ficando por aqui em breve estarei postando mais Artigos.
Abração à todos que tiram um tempinho para lerem os Artigos.