Hola jplj.
A ver si te sirve de este modo...
Código Delphi
[-]
...
implementation
function EnumWndProc(Handle: HWND; CB: TComboBox): BOOL; stdcall;
var
Name: array[0..128] of Char;
s: string;
begin
Result := True;
SendMessage(Handle, WM_GETTEXT, Sizeof(Name), integer(@Name));
SetString(s ,PChar(@Name[0]), Length(Name));
s:= UpperCase(s);
if (AnsiPos('.TXT', s) > 0) or (AnsiPos('.PDF', s) > 0) or (AnsiPos('.ODS', s) > 0) then
CB.Items.AddObject(Name, TObject(Handle));
end;
procedure TForm1.ComboBox1Enter(Sender: TObject);
begin
ComboBox1.clear;
EnumWindows(@EnumWndProc, LPARAM(ComboBox1));
ComboBox1.ItemIndex:= 0;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
var
Wnd: HWND;
begin
with TComboBox(Sender) do
begin
Wnd:= FindWindow(nil, PChar(Items[ItemIndex]));
if Wnd <> 0 then
begin
ShowWindow(Wnd, SW_SHOWNORMAL);
BringWindowToTop(Wnd);
end;
end;
end;
...
Del mismo modo podría implementarse mediante un
TListBox que se hiciera visible ante el click de un botón y se ocultara luego de la selección.
Saludos