Buscar

Gerenciando os itens da inicialização do sistema

nome

Kennedy Tedesco Parreira

Colunista ainda sem descrição. Caro colunista, por favor envie-nos sua descrição.

<< Introdução >>

Olá pessoal, através deste simples artigo vamos aprender a criar um programa que gerencie os programas que iniciam com o sistema, tendo a mesma função que o MSCONFIG. O Artigo é simples e bem detalhado, se adere a todos os níveis de programadores.

Iremos usar o registro do Windows, já que apartir do mesmo podemos trocar muitas configurações, eu considero o Registro do Windows, como o sangue do sistema operacional.

Pré- Requisitos:

Mero conhecimento em trabalhar com Registro. Registry.

Gerenciando Itens da Inicialização

  • 1º Passo
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.

 

Uses
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



Download Código Fonte
 

Conclusão

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.

Att,

Kennedy Tedesco P.
Kennedy@delphi.eti.br
Ktpigs@hotmail.com



 

Publicidade

Vote no artigo




Quantidade de votos: 1 voto
Aceitação: 100%


Detalhes do artigo

Categoria: Windows
Adicionado dia: 18/11/06
Por: Kennedy Tedesco Parreira
Visualizado: 28862 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009