Russian Qt Forum

Qt => Общие вопросы => Тема начата: cefire от Май 22, 2013, 20:34



Название: Получение пути по имени файла.
Отправлено: cefire от Май 22, 2013, 20:34
Я хочу получить список программ для функции "открыть с помощью".
Для этого я получаю 2 списка программ по ассоциациям. Далее для каждого списка использую соответственно следующие функции:
Код:
QSettings sett("HKEY_CLASSES_ROOT\\"+progids[i]+"\\shell\\open\\command",QSettings::NativeFormat);
QString val=sett.value("").toString();
и
Код:
QSettings sett("HKEY_CLASSES_ROOT\\Applications\\"+programs[i]+"\\shell\\open\\command",QSettings::NativeFormat);
QString val=sett.value("").toString();

Результат помещаю в новый список. Пример списка для BMP:

Цитировать
"C:\Program Files\Adobe\Adobe Illustrator CS6\Support Files\Contents\Windows\Illustrator.exe" "%1"
"C:\Program Files\Adobe\Adobe Photoshop CS5\Photoshop.exe" "%1"
"C:\Program Files\Adobe\Adobe Photoshop CS6\Photoshop.exe" "%1"
"C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" /dde
"C:\Program Files\Opera\Opera.exe" "%1"
"%systemroot%\system32\mspaint.exe" "%1"
C:\PROGRA~1\MIF5BA~1\Office14\OIS.EXE /shellOpen "%1"
%SystemRoot%\System32\rundll32.exe "%ProgramFiles%\Windows Photo Viewer\PhotoViewer.dll", ImageView_Fullscreen %1

Теперь мне это нужно преобразовать в следующее:

Цитировать
C:\Program Files\Adobe\Adobe Illustrator CS6\Support Files\Contents\Windows\Illustrator.exe
C:\Program Files\Adobe\Adobe Photoshop CS5\Photoshop.exe
C:\Program Files\Adobe\Adobe Photoshop CS6\Photoshop.exe
C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe
C:\Program Files\Opera\Opera.exe
%systemroot%\system32\mspaint.exe
C:\PROGRA~1\MIF5BA~1\Office14\OIS.EXE
%SystemRoot%\System32\rundll32.exe

Конечно можно обрезать в строке первый символ, если он кавычка, и до .exe
Но можно ли как-нибудь по-другому, например пропарсить чем-нибудь коммандную строку?

Дополнительно:
Можно ли для
Цитировать
%SystemRoot%\System32\rundll32.exe "%ProgramFiles%\Windows Photo Viewer\PhotoViewer.dll", ImageView_Fullscreen %1
получить иконку и описание из PhotoViewer.dll


Название: Re: Получение пути по имени файла.
Отправлено: kambala от Май 22, 2013, 20:51
в данном случае лучше кавычки искать ручками и проверять на первый символ


Название: Re: Получение пути по имени файла.
Отправлено: cefire от Май 22, 2013, 20:55
1) Данные берутся динамически с реестра.
2) Просто кавычки смотреть - не работает. Выше есть пример
Цитировать
C:\PROGRA~1\MIF5BA~1\Office14\OIS.EXE /shellOpen "%1"


Название: Re: Получение пути по имени файла.
Отправлено: kambala от Май 22, 2013, 21:08
и проверять на первый символ
не просто ж так я это написал. если первый символ — не кавычка, тогда ищется пробел.


Название: Re: Получение пути по имени файла.
Отправлено: cefire от Май 22, 2013, 22:12
Спасибо.