Social Icons

^^

terça-feira, 10 de agosto de 2010

Gerenciando Itens da Inicialização com o Delphi


Olá pessoal, eu sou o Jefferson e 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



2 comentários:

  1. Amigo somente esqueceu de deixar a senha para os que queiram baixar o código fonte...

    hehehe...

    bye

    ResponderExcluir
  2. Ops.. esqueci, mas a senha é: www.progmaster.tk

    ResponderExcluir

Popular Posts

 

Seguidores

Hora exata:

Total de visualizações de página