AIMP Forum
AIMP for Windows => Ошибки и замечания / Bugs => Обработано / Processed => Topic started 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
- Команда, выполняемая по Enter:
@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%
-
те процесс AIMP
установил рабочий каталог - каталог откуда я первый раз его стартовал
вопрос можно как то при запуске Aimp передать установи вот такой-то рабочий каталог?
пока проблему решаю обходным путём
на ассоциацию делаю команду
@rundll32 url.dll,FileProtocolHandler "file://!\!.!"
те как будто бы запустили через проводник у него при этом рабочий каталог устанавливается C:\Windows\System32\
-
Исследовал. Рабочий каталог плееру назначает FAR, правда косвенно:
Когда вы запускаете файл таким образом, FAR порождает дочерний процесс (AIMP), тот забирает от FAR настройки окружения, в т.ч. и текущую папку (CurrentDirectory в терминах Windows). Когда же вы запускаете второй файл, порождаемый процесс AIMP-а передает командную строку первой запущенной копии и тут же закрывается, поэтому новый каталог не лочится.
Конечно, я могу пофиксить это на своей стороне с помощью костыля - при запуске сбрасывать путь куда-нибудь на системную папку. НО, у меня нет гарантий, что это не сломает чьи-нибудь скрипты автоматизации.
-
Хорошо, а как насчёт варианта добавить параметр командной строки AIMP.EXE /WORKDIR например
который если задан (for example /WORKDIR="C:windows\system32") устанавливал рабочий каталог у процесса на переданное значение (если оно валидное) ?
пример кода
https://docs.microsoft.com/en-us/windows/win32/fileio/changing-the-current-directory
-
Не знаю, как в FAR, но в тотале можно указать "рабочую папку" при запуске приложения. Именно это и есть CurrentDirectory.
-
только что нашёл решение для FAR
в ассоциации на медиа расширения прописать:
lua:win.ShellExecute(nil, nil, 'Aimp', far.ConvertPath(APanel.Current))