Я хочу получить список программ для функции "открыть с помощью".
Для этого я получаю 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