Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как открыть каталог в проводнике(Windows)?
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
AntonH851
Добрый день.
Вот такая проблема: нужно открыть указанный каталог в проводнике из программы.
Пробовал через 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
Цитата(AntonH851 @ 29.6.2010, 9:54) *
не получилось...

Поподробнее. Что выдает на консоль. Запускается ли процесс?
Алексей1153
Попробуй в качестве запускаемого просто полный путь к каталогу указать

ShellExecute(
    h,
    0,
    tr("c:/111/222/333"),
    0,
    0,
    SW_RESTORE
);


Будет эквивалентно щелчку мышью по каталогу
molchanoviv
Кстати тебе стоит проверять process.waitForStarted() и process.waitForFinished()
AntonH851
Цитата(molchanoviv @ 29.6.2010, 10:01) *
Цитата(AntonH851 @ 29.6.2010, 9:54) *
не получилось...

Поподробнее. Что выдает на консоль. Запускается ли процесс?



На консоль ничего не выдает, проводник запускается, но выдает ошибку:
Цитата
Путь "С:/QP/GTD/debug/10101110_010610_0002052" не существует или не является каталогом

Хотя каталог такой существует...
molchanoviv
Слеши. В explorer-е слеши в другую сторону. Т.е. путь должен выглядеть как С:\QP\GTD\debug\10101110_010610_0002052
Алексей1153
QDir::absolutePath ()
и
QDir::toNativeSeparators()

:)
AntonH851
Цитата(molchanoviv @ 29.6.2010, 10:21) *
Слеши. В explorer-е слеши в другую сторону. Т.е. путь должен выглядеть как С:\QP\GTD\debug\10101110_010610_0002052

Точно, проблема решена, спасибо!

Цитата(Алексей1153 @ 29.6.2010, 10:30) *
QDir::absolutePath ()
и
QDir::toNativeSeparators()

:)

Поздно я увидел ваше сообщение.... успел написать свою функцию замены разделителей)
Алексей1153
Цитата(AntonH851 @ 29.6.2010, 12:35) *
Поздно я увидел ваше сообщение.... успел написать свою функцию замены разделителей)

Написать свою реализацию - это всегда полезно в плане тренировки, но пользоваться после этого лучше готовым средством :) К тому же, у нас тут кроссплатформенность
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.