Захват пути к папке из проводника Windows

#delphi #windows-explorer

#delphi #windows-explorer

Вопрос:

Я хотел бы добавить в приложение Delphi способ, позволяющий пользователю вызывать проводник Windows (возможно, используя что-то вроде ShellExecute, возможно).

Однако, и здесь мне нужна некоторая помощь, пожалуйста, приложению потребуется захватить ^ H ^ H ^ H ^ H ^ H ^ H для чтения пути к папке, к которой переходит пользователь, находясь в проводнике Windows.

Возможно ли получить эту информацию из проводника Windows?

[редактировать: Если это невозможно или нереально, мой запасной план состоит в том, чтобы предоставить отдельную кнопку «Обзор папки», чтобы позволить пользователю сначала выбрать папку, а затем они могут запустить Window Explorer впоследствии].

Спасибо за любой совет. Черт возьми.

Комментарии:

1. @PhilW Не могли бы вы немного прояснить это, пожалуйста, вы надеетесь подключиться к Explorer.exe сам по себе, или вы хотите создать проводник, подобный файловому диалогу?

2. Захват пути к папке, как в ловушке и поместить его в клетку? Я не понимаю вопроса, пожалуйста, объясните.

3. Что не так с TBrowseForFolder ?

4. @Reallyethical: Возможно, я прошу невозможного, но я хотел бы предоставить пользователю возможности проводника Windows, но также необходимо прочитать и сохранить путь к папке, в которой работает пользователь.

5. @Cosmin: Спасибо за ответ; вы оказали большую помощь в моих предыдущих вопросах. Извините, что не использую понятный английский, я отредактировал вопрос, чтобы предоставить больше информации.

Ответ №1:

Я не знаю ваших точных потребностей, но, скорее всего, это не тот путь. Для получения подробной информации разработчик Microsoft Рэймонд Чен написал об этом сообщение в блоге. Что вам следует сделать, я думаю, это встроить элемент управления браузера Explorer в пользовательскую форму в вашем собственном приложении.

Комментарии:

1. Очень интересная ссылка, спасибо. После прочтения блога мне немного стыдно, что я даже подумывал о том, чтобы сделать то, что задал мой вопрос. Ответ принят с благодарностью.

Ответ №2:

Чтобы позволить пользователю просматривать и выбирать папку, я использую TOrtusShellBrowseFolder.

Компоненты оболочки Ortus

Ответ №3:

Разве вы не можете просто использовать TOpenDialog? Из справки Delphi:

Описание

TOpenDialog отображает модальное диалоговое окно Windows для выбора и открытия файлов. Диалоговое окно не отображается во время выполнения, пока оно не активировано вызовом метода Execute. Когда пользователь нажимает Открыть, диалоговое окно закрывается, и выбранный файл или файлы сохраняются в свойстве Files.

 if OpenDialog1.Execute then
   filename := OpenDialog1.FileName;
  

Комментарии:

1. Привет, Лесли, может дойти и до этого, но я надеялся получить свой пирог и съесть его, предоставив пользователю всю мощь проводника, а также отслеживать и сохранять путь к папке, который они использовали. Я думаю, вы правильно подметили, что это стандартная функция, с которой пользователи знакомы и понимают, как ее использовать, даже если для ее завершения им может потребоваться немного больше времени.