Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Trucos (https://www.clubdelphi.com/foros/forumdisplay.php?f=52)
-   -   Mostrar el diálogo de búsqueda en Windows (https://www.clubdelphi.com/foros/showthread.php?t=80565)

dec 30-06-2006 14:03:08

Mostrar el diálogo de búsqueda en Windows
 
¿Cómo puedo ejecutar "Buscar" de Windows?

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

Algo así como:

Código Delphi [-]
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.


La franja horaria es GMT +2. Ahora son las 12:55:02.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi