Código
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.
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009