Delphi World - Показать диалог поиска файлов
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Показать диалог поиска файлов

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

uses
   DDEMan;

 procedure SearchInFolder(Folder: string);
 begin
   with TDDEClientConv.Create(Self) do
   begin
     ConnectMode        := ddeManual;
     ServiceApplication := 'Explorer.exe';
     SetLink('Folders', 'AppProperties');
     OpenLink;
     ExecuteMacro(PChar('[FindFolder(, ' + Folder + ')]'), False);
     CloseLink;
     Free;
   end;
 end;

 procedure TForm1.Button1Click(Sender: TObject);
 begin
   SearchInFolder('c:\Windows');
 end;

 {************************************}

 // Or even easier with ShellExecute: 

ShellExecute(Handle, 'find', 'C:\Windows', nil, nil, SW_SHOW);

 {************************************}

 // Suchen-Dialog ausfuhren und einen Suchstring ubergeben: 

uses
   ShellAPI;

 procedure WindowsSuchenDialog(Verzeichnis, Suchstring: string);
 var
   hOtherWin, hFocusWin: HWND;
   OtherThreadID, iTimeOut: Integer;
   aDwordVar: DWORD;
   buf: array [0..40] of Char;
   sVerz: string;
 begin
   // ShellExecute(application.handle, 'find', 'c:\', nil, nil, SW_SHOWNORMAL); 
  // oder mit TDDEClientConv 
  with TDDEClientConv.Create(nil) do
   begin
     ConnectMode := ddeManual;
     ServiceApplication := 'explorer.exe';
     SetLink('Folders', 'AppProperties');
     OpenLink;
     sVerz := IncludeTrailingBackslash(Verzeichnis);
     ExecuteMacro(PChar('[FindFolder(, '+ sVerz +')]'), False);
     CloseLink;
     Free;
   end;
   iTimeOut := 0;
   repeat
     { Warten, bis der Such Dialog erscheint. 
      Unter Win95/98/NT4 hat der Suchdilaog die Klasse #32770. 
      Unter ME/2000/XP ist die Suche in den Explorer integriert, 
      darum auf CabinetWClass warten}
     Sleep(100);
     hOtherWin := GetForegroundWindow;
     buf[0] := #0;
     GetClassName(hOtherWin, buf, 60);
     inc(iTimeOut);
   until (StrComp(buf, '#32770') = 0) or (StrComp(buf, 'CabinetWClass') = 0) or (iTimeOut > 20);
   if iTimeOut > 20 then Exit;
   repeat
     { Wait until it is visible }
     { Warten, bis das Fenster erscheint }
     Sleep(100);
   until IsWindowVisible(hOtherWin);

   { Handle vom Control finden, welches den Fokus besitzt }
   OtherThreadID := GetWindowThreadProcessID(hOtherWin, @aDwordvar);
   if AttachThreadInput(GetCurrentThreadID, OtherThreadID, True) then
   begin
     hFocusWin := GetFocus;
     if hFocusWin <> 0 then
       try
         SendMessage(hFocusWin, WM_SETTEXT, 0, Longint(PChar(Suchstring)));
       finally
         AttachThreadInput(GetCurrentThreadID, OtherThreadID, False);
       end;
   end;
 end;

 procedure TForm1.Button1Click(Sender: TObject);
 begin
   WindowsSuchenDialog('c:\temp','test.txt');
 end;
Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования