PDA

Ver la Versión Completa : Mostrar el diálogo de búsqueda en Windows


dec
30-06-2006, 14:03:08
¿Cómo puedo ejecutar "Buscar" de Windows?

Tienes que usar la función ShellExecuteEx, con el verbo buscar, o sea "Find".

Algo así como:


procedure TForm1.Button1Click(Sender: TObject);
var
pidl: PItemIDList;
ExecInfo: TShellExecuteInfo;
begin
try
FillChar(ExecInfo, SizeOf(ExecInfo), 0);
SHGetSpecialFolderLocation(0, CSIDL_PERSONAL, pidl);
with ExecInfo do
begin
cbSize := SizeOf(ExecInfo);
fMask := SEE_MASK_INVOKEIDLIST;
lpVerb := 'Find';
lpIDList := pidl;
end (*with*);
ShellExecuteEx(@ExecInfo);
finally
CoTaskMemFree(pidl);
end (*try*);
end (*Button1Click*);


Yo le he puesto que empieze con la carpeta 'mis documentos' por defecto, a lo mejor querrías que empezase en 'Mi PC' o algo por el estilo, mira en la ayuda los valores para los CSIDL o bien mete el nombre de un directorio en el miembro lpDirectory
(en cuyo caso tendrás que quitar fMask).

Como usa las extensiones de Shell, tendrás que añadir a la claúsula Uses las Units ShellAPI y ShlObj, y como usa explícitamente CoTaskMemFree también ActiveX, puede que prefieras instanciar el 'OLE Memory Allocator' por defecto del Shell (con SHGetMalloc) para invocar sus métodos directamente para liberar la memoria que tomas prestada (IMalloc.Free), en ese caso creo que es COMObj la Unit que tienes que añadir.