Автор: AntonH851 29.6.2010, 8:54
Добрый день.
Вот такая проблема: нужно открыть указанный каталог в проводнике из программы.
Пробовал через QProcess:
QProcess process;
QString command;
command = "explorer " + path;
process.start(command);
не получилось...
Решил попробовать ShellExecute, но не знаю какой тип строк передавать в качестве параметов:
HWND h;
ShellExecute(h, QString("explore").toStdString().c_str(),
path.toStdString().c_str(),
NULL, NULL, SW_RESTORE);
Ругается:
Цитата
C:/QP/GTD/files.cpp:85: error: cannot convert 'const char*' to 'const WCHAR*' for argument '2' to 'HINSTANCE__* ShellExecuteW(HWND__*, const WCHAR*, const WCHAR*, const WCHAR*, const WCHAR*, INT)'
Подскажите что-нибудь пожалуйста, или по QProcess(что предпочтительней) или по ShellExecute.
Автор: molchanoviv 29.6.2010, 9:01
Цитата(AntonH851 @ 29.6.2010, 9:54)
не получилось...
Поподробнее. Что выдает на консоль. Запускается ли процесс?
Автор: Алексей1153 29.6.2010, 9:01
Попробуй в качестве запускаемого просто полный путь к каталогу указать
ShellExecute(
h,
0,
tr("c:/111/222/333"),
0,
0,
SW_RESTORE
);
Будет эквивалентно щелчку мышью по каталогу
Автор: molchanoviv 29.6.2010, 9:06
Кстати тебе стоит проверять process.waitForStarted() и process.waitForFinished()
Автор: AntonH851 29.6.2010, 9:07
Цитата(molchanoviv @ 29.6.2010, 10:01)
Цитата(AntonH851 @ 29.6.2010, 9:54)
не получилось...
Поподробнее. Что выдает на консоль. Запускается ли процесс?
На консоль ничего не выдает, проводник запускается, но выдает ошибку:
Цитата
Путь "С:/QP/GTD/debug/10101110_010610_0002052" не существует или не является каталогом
Хотя каталог такой существует...
Автор: molchanoviv 29.6.2010, 9:21
Слеши. В explorer-е слеши в другую сторону. Т.е. путь должен выглядеть как С:\QP\GTD\debug\10101110_010610_0002052
Автор: Алексей1153 29.6.2010, 9:30
QDir::absolutePath ()
и
QDir::toNativeSeparators()
Автор: AntonH851 29.6.2010, 9:35
Цитата(molchanoviv @ 29.6.2010, 10:21)
Слеши. В explorer-е слеши в другую сторону. Т.е. путь должен выглядеть как С:\QP\GTD\debug\10101110_010610_0002052
Точно, проблема решена, спасибо!
Цитата(Алексей1153 @ 29.6.2010, 10:30)
QDir::absolutePath ()
и
QDir::toNativeSeparators()
Поздно я увидел ваше сообщение.... успел написать свою функцию замены разделителей)
Автор: Алексей1153 29.6.2010, 10:28
Цитата(AntonH851 @ 29.6.2010, 12:35)
Поздно я увидел ваше сообщение.... успел написать свою функцию замены разделителей)
Написать свою реализацию - это всегда полезно в плане тренировки, но пользоваться после этого лучше готовым средством
К тому же, у нас тут кроссплатформенность