Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Показать диалог поиска файлов

Delphi , Программа и Интерфейс , Диалоги и Фреймы

Показать диалог поиска файлов

Оформил: 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 и FreePascal.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Диалоги и Фреймы ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-04-24 22:55:34
2024-04-25 23:07:33/0.0032219886779785/0