Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 07 de Junho de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
28 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Dicas]  Adicionando o sistema no menu de contexto do Windows Explorer
Publicado por KMerlotti : Sexta, Abril 15, 2011 - 10:26 GMT-3 (1221 leituras)
Comentários comentar   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Kelver Merlotti Aqui vai uma dica para adicionar um item ao menu de contexto do Windows Explorer, exibido ao clicarmos com o botão direito do mouse sobre uma pasta.

Quando o usuário clica com o botão direito sobre uma pasta no Windows Explorer (ou em um componente TShellTreeView) um menu de contexto é exibido. Entre os itens padrões é possível adicionar um para a sua própria aplicação. Quando o usuário clicar neste seu item, o programa será iniciado e o caminho daquele diretório será passado como parâmetro.

A procedure a seguir adiciona uma entrada no registro do Windows para "registrar o programa" como um comando válido no menu de contexto:

procedure EnsureShellFolderPopupItem(const itemName: string);
begin
  with TRegistry.Create do
  try
    RootKey := HKEY_CLASSES_ROOT;
    if OpenKey('Directory\shell', true) then
    begin
      if OpenKey(itemName+'\command', true) then
        WriteString('', '"'+Application.ExeName+'" "%1"');
    end;
  finally
    Free;
  end;
end;

Este código fará a adição de uma chave na seguinte forma:

HKEY_CLASSES_ROOT\Directory\shell\itemName

Onde itemName será passado por parâmetro à função (vide código abaixo) e que na verdade será o texto de exibição no menu de contexto. Seu valor será o caminho do programa e o %1, para indicar que a pasta clicada será enviada por parâmetro à aplicação:

;@="c:\...\Project1.exe" "%1" - Onde "c:\...\Project1.exe" é o local do seu executável.

Agora no evento onCreate do Form, façamos:

procedure TForm1.FormCreate(Sender: TObject);
begin
  //certifica que nosso item está no menu de contexto de diretórios
  //não é necessário chamar sempre, mas para testes está ok!
  EnsureShellFolderPopupItem('Processar com Meu Programa');
 
  //exibe qual a pasta que foi selecionada para processamento
  if ParamCount > 0 then
    ShowMessage('Pasta selecionada: ' + ParamStr(1))
  else
    ShowMessage('Sistema iniciado diretamente');
end;

Para testar, rode o programa pelo Delphi para que seja processada a procedure EnsureShellFolderPopupItem. Você receberá a mensagem "Sistema iniciado diretamente". Em seguida, feche o programa e clique com o botão direito sobre qualquer diretório no seu computador. Você verá seu programa no menu de contexto, conforme mostra a figura 1 e, ao clicar neste item, verá o seu programa sendo aberto e a mensagem com o caminho do diretório sendo exibido, assim como a figura 2.


Figura 1 - Menu de contexto sendo exibido


Figura 2 - Mensagem do programa mostrando o caminho do diretório

E é isso aí galera! Espero que tenham gostado e que seja útil.
Um forte abraço e até a próxima.

Por: Kelver Merlotti - Coordenador Editorial
Contato: kelver@activedelphi.com.br
Fonte: http://delphi.about.com



Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados