Автоматизация Проводника: Программное Открытие Окна с Выбранным Файлом в Delphi и Pascal
Вопрос, который стоит перед разработчиками, заключается в том, как программно открыть окно Проводника с выбранным файлом, так же как это происходит при нажатии кнопки "Find Target..." в диалоге свойств ярлыка .lnk. Существует функция для этого, но её название было забыто, и найти его самостоятельно не удалось.
Решение проблемы
Для решения данной задачи можно использовать функцию SHOpenFolderAndSelectItems. Эта функция позволяет открыть окно Проводника и выделить в нём указанные файлы. Не забудьте перед первым использованием SHOpenFolderAndSelectItems вызвать функцию CoInitialize.
Пример кода на Object Pascal (Delphi)
uses ShellAPI;
procedure ShowFileInExplorer(const FilePath: string);
var
Items: TArray<PItemIDList>;
PIDL: PItemIDList;
begin
PIDL := PidlFromPath(FilePath);
SetLength(Items, 1);
Items[0] := PIDL;
Result := SHOpenFolderAndSelectItems(0, Items[0], SHGDL_DEFAULT, nil, nil);
CoTaskMemFree(PIDL);
end;
function PidlFromPath(const FilePath: string): PItemIDList;
var
PWStr: PWideChar;
begin
Result := nil;
if AllocSysString(FilePath, PWStr) then
Result := SHParseDisplayName(PWStr, nil, nil, 0, nil);
end;
Важные замечания
Функция SHOpenFolderAndSelectItems требует использования интерфейсов COM, что может быть более сложным по сравнению с использованием ShellExecute.
Убедитесь, что вы освобождаете память, выделенную функцией CoTaskMemFree, после использования PIDL.
Альтернативный ответ
Если вы не хотите использовать COM-интерфейсы, можно воспользоваться функцией ShellExecute, которая также позволяет открыть Проводник и выделить файл. Однако, важно отметить, что поведение ShellExecute с параметром /select может отличаться от SHOpenFolderAndSelectItems.
В зависимости от ваших предпочтений и требований проекта, вы можете выбрать один из предложенных вариантов для открытия Проводника с выбранным файлом в программе на Delphi или Pascal.
Описание Context: Вопрос о том, как программно открыть окно Проводника с выбранным файлом в программе на Delphi и Pascal, с использованием функции `SHOpenFolderAndSelectItems` или `ShellExecute`.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.