Показать диалог поиска файлов
Оформил: 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 ;
Если Вас заинтересовала или понравилась информация по разработке на Delph - "Показать диалог поиска файлов", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу:
Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи , в сообщение обязательно указывайте название или ссылку на статью!