Buscar

Abrir uma janela dos num folder qualquer, via explorer

Código

Clicando com o botão da direita em uma pasta qualquer do HD, via Windows Explorer, aparecerá no menu popup a opção "Prompt aqui..." que irá abrir uma janela de prompt do DOS naquele diretório, usando a função ShellExecute da API do Windows.

O programa é uma console, ou seja, não tem Form nenhum, fazendo-o ficar muito pequeno - 61k (Selecione New...Console Application).

Se for usado sem parâmetros, ele se auto-instala no registro, criando a seguinte chave:

HKEY_CLASSES_ROOTFolderShellPrompt aqui...

e dentro desta cria a chave "command", onde registra o valor ( default ) com o caminho completo do executável.
Cada vez que se clicar com o botão da direita numa pasta, o menu vai mostrar a opção "Prompt aqui...".

Se for usado com parâmetro, entende que foi passado um path; usa este path como path inicial do command.com, quando abrir a janela, o que é feito com a função shellexecute:

ShellExecute(
HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile,
LPCTSTR lpParameters, LPCTSTR lpDirectory,
INT nShowCmd
);

que é usada com os parâmetros:

shellexecute(0,pchar('open'),pchar('command.com'),
nil,pchar(path),SW_SHOW);

O programa também usa a messagebox da API para indicar que consegui se instalar no registro, poupando em tamanho por não precisar usar a VCL do Delphi.
Depois de instlado, se você mudar de lugar o executável deve rodá-lo, novamente, sem parâmetros, para reinstalação,ou seja, para que o novo caminho do programa seja inserido no registro do windows.

Eis o programa:

program promptaqui;

uses
shellapi,
windows, sysutils, registry;

{$R *.RES}
var
reg : tregistry;
path : string;
cont : integer;
begin
if paramcount > 0 then
begin
path := '';
for cont := 1 to paramcount do
path := path +paramstr(cont)+' ';
path := trim(path);
shellexecute(0,pchar('open'),pchar('command.com'),
nil,pchar(path),SW_SHOW);
end
else
begin
reg := tregistry.create;
reg.RootKey := hkey_classes_root;
reg.openkey('',false);
if reg.OpenKey('Folder',false) then
begin
reg.OpenKey('shell',true);
reg.Openkey('Prompt aqui...',true);
reg.OpenKey('command',true);
reg.WriteString('',getcurrentdir+'promptaqui.exe %1');
reg.CloseKey;
messagebox(0,pchar('Prompt Aqui instalado com sucesso.'),
pchar('Prompt Aqui'),MB_OK);
end;
end;
end.

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Windows
Adicionada dia: 10/05/05
Por: Joaquim Estevam De Araujo Neto
Visualizada: 3863 vezes

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