Открыть папку в отдельном окне

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Аватара пользователя
Troublemaker
постоялец
Сообщения: 292
Зарегистрирован: 16.04.2008 13:00:44
Откуда: Биробиджан, Дальний Восток
Контактная информация:

Открыть папку в отдельном окне

Сообщение Troublemaker »

Возникла подзадача: надо из программы открыть отдельное окно текущего файлового менеджера. Из командной строки это решается просто:

explorer <dirname>

nautilus <dirname>

и т.п.

А есть ли какой-то универсальный способ, что-нибудь вроде ShellCommand.ShowDir(<dirname>) ?

Смысл задачи: дать возможность пользователю выполнить какие-то (любые) действия над файлами средствами операционной среды.
Odyssey
энтузиаст
Сообщения: 580
Зарегистрирован: 29.11.2007 16:32:24

Сообщение Odyssey »

Troublemaker писал(а):А есть ли какой-то универсальный способ, что-нибудь вроде ShellCommand.ShowDir(<dirname>) ?

Скорее нет чем да, слишком уж много файловых менеджеров. Хотя можно самостоятельно написать определение ФМ и запуск его с параметрами. Например, в fpGUI для похожей задачи (открытие ссылки в браузере по умолчанию) используется следующий код:

Код: Выделить всё

// под Windows
procedure fpgOpenURL(const aURL: TfpgString);
begin
  try
    ShellExecute(0, 'open', PChar(aURL), nil, nil, 0) ;
  except
    // do nothing
  end;
end;

// под Linux
procedure fpgOpenURL(const aURL: TfpgString);
var
  Helper: string;
begin
  Helper := '';
  if fpsystem('which xdg-open') = 0 then
    Helper := 'xdg-open'
  else if FileExists('/etc/alternatives/x-www-browser') then
    Helper := '/etc/alternatives/x-www-browser'
  else if fpsystem('which firefox') = 0 then
    Helper := 'firefox'
  else if fpsystem('which konqueror') = 0 then
    Helper := 'konqueror'
  else if fpsystem('which opera') = 0 then
    Helper := 'opera'
  else if fpsystem('which mozilla') = 0 then
     Helper := 'mozilla';

  if Helper <> '' then
    fpSystem(Helper + ' ' + aURL + '&');
end;
Аватара пользователя
Troublemaker
постоялец
Сообщения: 292
Зарегистрирован: 16.04.2008 13:00:44
Откуда: Биробиджан, Дальний Восток
Контактная информация:

Сообщение Troublemaker »

Odyssey писал(а):Скорее нет чем да,

Просто любопытно, а как это реализовано в мозиллах, когда из списка закачек можно открыть либо "адрес файла" (seamonkey) либо "папку, содержащую файл" (firefox)?
Аватара пользователя
Attid
долгожитель
Сообщения: 2589
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

Troublemaker писал(а):Просто любопытно, а как это реализовано в мозиллах, когда из списка закачек можно открыть либо "адрес файла" (seamonkey) либо "папку, содержащую файл" (firefox)?

они опенсурс можешь глянуть =)
Ответить