Как открыть папку, но без ShellExecute?
Как показать папку в проводнике?
ShellExecute(0,'open','explorer.exe',PChar('"'+txtFolder+'"'),nil,SW_SHOWNORMAL);
Нет, вариант с ShellExecute не подходит.
Потому что лично я использую модификацию (QTTabBar), которая добавляет вкладки для встроенного проводника Windows. И вместо того, чтобы открыть новую вкладку в уже открытом окне, запуск "explorer.exe", ожидаемо, открывает новое окно с новой вкладкой в нём.
Однако я знаю, что это возможно, потому что так можно сделать в python:
import os
os.startfile(txtFolder)
#subprocess.Popen(f'explorer "{txtFolder}"') #Аналог ShellExecute.
Этот код вместо открытия нового окна, открывает новую вкладку в текущем окне проводника. То, что и нужно.
Как сделать то же самое на Delphi? Какой есть аналог os.startfile
для Delphi?
Ответы (1 шт):
Ничего не приходит в голову, кроме, как открыть через TFileOpenDialog
:
procedure TForm1.OpenDialog(aPath: String);
begin
with TFileOpenDialog.Create(nil) do
try
DefaultFolder := aPath;
Options := [fdoPickFolders ];
if Execute then
ShowMessage(FileName);
finally
Free;
end;
end;
И соотвеетсвенно вызов:
OpenDialog('C:\Windows\System32\');