Bueno, si no se trata de copiar y pegar, entonces esto no te hace falta
Código Delphi
[-]
procedure TFrmBuscador.busca(InitialPath, Search: String);
var
t: TsearchRec; rest : Integer;
icono: Ticon;
lpicono: Word;
elemento: TListItem;
strSearch: string;
Index,realPos:Integer;
begin
if length(search) < 1 then
exit;
rest := findfirst(InitialPath + '\*.*', faAnyFile, t); while rest = 0 do
begin
if (t.name <> '.') and (t.name <> '..') then
if (t.Attr >= fadirectory) and (t.Attr < faarchive) then
busca(InitialPath + '\' + t.name, Search)
else begin
strSearch := lowercase(Search);
if Search[1] = '*' then
begin
strSearch := Copy(Search,2,255);
end;
Index := Pos(strSearch,LowerCase(t.Name));
if (t.Attr <> fadirectory) and (t.name <> '.') and (t.name <> '..') and
(
((Index > 0) and (Search[1]='*')) or
((Index = 1) and (Search[1]<>'*'))
)then
begin
try
encontrados.Add(t.name);
icono := Ticon.create;
try
lpicono := 1;
icono.Handle := ExtractAssociatedIcon(
handle, pchar(initialpath + '\' + t.name), lpicono);
elemento := list.Items.Add;
elemento.ImageIndex := Images.AddIcon(icono);
Largeimages.AddIcon(icono);
elemento.Caption := t.Name;
finally
icono.ReleaseHandle;
FreeAndNil(icono);
end;
except end;
label1.caption := inttostr(list.items.count) + ' elementos encontrados';
label1.Refresh;
end;
end; rest := sysutils.FindNext(t);
end; sysutils.FindClose(t);
end;
procedure TFrmBuscador.BorrarClick(Sender: TObject);
begin
images.clear;
largeimages.Clear;
list.Items.Clear;
label1.caption := '';
Encontrados.Clear;
end;
List es un TlistView
Encontrados es un TStringList donde se guardan los archivos coincidentes con la búsqueda. tiene dupError en los duplicados.
Images es un Timagelist con tamaño de 16x16
largeImages es un Timagelist con tamaño de 32x32
Hay más cosas, pero son constantes y labels que puedes quitar.
Una posible llamada es:
Código Delphi
[-]
busca('c:\Documents and Settings\All Users\Menú Inicio\Programas\',
'*expl');
con lo que aparecerá en el ListView:
- internet explorer
- explorador de archivos
- msn explorer
etc... con sus iconos asociados de windows.
No está optimizado y tiene algún error de concepto, pero soy muy vago y no me he puesto a arreglarlos.
Como estas viendo esto es el núcleo de un programa Buscador que uso desde hace 4 años, básicamente, pulsas la tecla F10 (hook de teclado para todo windows) y buscas el programa que quieras ejecutar; los resultados (5 o 6) aparecen en el ListView, en caso de que haya solo un resultado, hace un ShellExecute.
Como el programa guarda las búsquedas, con solo pulsar la tecla F10 y despues escribir en un combo "del" ya tengo el delphi abierto. Si escribo "Ner" ya tengo el nero abierto.
saludos