AIMP Forum

AIMP for Windows => Ошибки и замечания / Bugs => Обработано / Processed => Topic started by: zeroes on June 30, 2022, 10:42:12

Title: [-] [2394] [x64] Блокировка AIMP каталога
Post by: zeroes on June 30, 2022, 10:42:12
непонятно чья проблема FAR или AIMP?
~~~~~~~~~~~~~~~~~~~~~~~~~~~
win10 21h2
Far Manager v3.0 build 5988 x86/x64
aimp_5.03.2394_w64.exe

AIMP блокирует папку при первом запуске

В FAR'e отключен запуск по enter на ассоциации windows
параметры -> системные параметры -> [ ] Использовать стандартные типы файлов

запуск аудио регулируется:
команды ->Ассоциации файлов

*.m3u,*.mp3,*.m3u,*.flac,*.ogg,*.wav

@aimp "!\!.!"
или так: aimp "!\!.!"

так вот имеем ситуацию:
c:\1\file1.mp3
c:\2\file2.mp3
c:\3\file3.mp3

aimp не запущен
жмём enter на файле в каталоге 1 он начинает воспроизводится
жмём enter на файле в каталоге 2 он начинает воспроизводится (сменяется с 1-го трека на этот)
жмём enter на файле в каталоге 3 он начинает воспроизводится (сменяется с 2-го трека на этот)

пробуем удалить файл и папку 2 - всё удаляется
пробуем удалить файл и папку 1 - файл удаляется но папка блокирована процессом AIMP

Nthandle v4.22 - Handle viewer
Copyright (C) 1997-2019 Mark Russinovich
Sysinternals - www.sysinternals.com

AIMP.exe           pid: 9796   type: File           634: C:\1

при использовании запуска через ассоации Windows проблемы нет

воспроизводимость проблемы 100%
Title: Re: [2394] [x64] Блокировка AIMP каталога
Post by: zeroes on June 30, 2022, 12:02:32
те процесс AIMP
установил рабочий каталог - каталог откуда я первый раз его стартовал

вопрос можно как то при запуске Aimp передать установи вот такой-то рабочий каталог?

пока проблему решаю обходным путём

на ассоциацию делаю команду
@rundll32 url.dll,FileProtocolHandler "file://!\!.!"

те как будто бы запустили через проводник у него при этом рабочий каталог устанавливается C:\Windows\System32\
Title: Re: [2394] [x64] Блокировка AIMP каталога
Post by: Artem on June 30, 2022, 16:42:09
Исследовал. Рабочий каталог плееру назначает FAR, правда косвенно:

Когда вы запускаете файл таким образом, FAR порождает дочерний процесс (AIMP), тот забирает от FAR настройки окружения, в т.ч. и текущую папку (CurrentDirectory в терминах Windows). Когда же вы запускаете второй файл, порождаемый процесс AIMP-а передает командную строку первой запущенной копии и тут же закрывается, поэтому новый каталог не лочится.

Конечно, я могу пофиксить это на своей стороне с помощью костыля - при запуске сбрасывать путь куда-нибудь на системную папку. НО, у меня нет гарантий, что это не сломает чьи-нибудь скрипты автоматизации.
Title: Re: [-] [2394] [x64] Блокировка AIMP каталога
Post by: zeroes on July 01, 2022, 06:00:04
Хорошо, а как насчёт варианта добавить параметр командной строки AIMP.EXE /WORKDIR например
который если задан (for example /WORKDIR="C:windows\system32") устанавливал рабочий каталог у процесса на переданное значение (если оно валидное) ?

пример кода
https://docs.microsoft.com/en-us/windows/win32/fileio/changing-the-current-directory
Title: Re: [-] [2394] [x64] Блокировка AIMP каталога
Post by: Artem on July 01, 2022, 10:41:22
Не знаю, как в FAR, но в тотале можно указать "рабочую папку" при запуске приложения. Именно это и есть CurrentDirectory.
Title: Re: [-] [2394] [x64] Блокировка AIMP каталога
Post by: zeroes on July 05, 2022, 21:54:50
только что нашёл решение для FAR

в ассоциации на медиа расширения прописать:
lua:win.ShellExecute(nil, nil, 'Aimp', far.ConvertPath(APanel.Current))