crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Как открыть каталог в проводнике(Windows)?
AntonH851
  опции профиля:
сообщение 29.6.2010, 8:54
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 66
Регистрация: 20.2.2010
Из: Шебекино
Пользователь №: 1475

Спасибо сказали: 1 раз(а)




Репутация:   0  


Добрый день.
Вот такая проблема: нужно открыть указанный каталог в проводнике из программы.
Пробовал через 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
Сообщение #2


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

Спасибо сказали: 41 раз(а)




Репутация:   5  


Цитата(AntonH851 @ 29.6.2010, 9:54) *
не получилось...

Поподробнее. Что выдает на консоль. Запускается ли процесс?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 29.6.2010, 9:01
Сообщение #3


фрилансер
******

Группа: Участник
Сообщений: 2900
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Попробуй в качестве запускаемого просто полный путь к каталогу указать

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


Будет эквивалентно щелчку мышью по каталогу

Сообщение отредактировал Алексей1153 - 29.6.2010, 9:03
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 29.6.2010, 9:06
Сообщение #4


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

Спасибо сказали: 41 раз(а)




Репутация:   5  


Кстати тебе стоит проверять process.waitForStarted() и process.waitForFinished()
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AntonH851
  опции профиля:
сообщение 29.6.2010, 9:07
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 66
Регистрация: 20.2.2010
Из: Шебекино
Пользователь №: 1475

Спасибо сказали: 1 раз(а)




Репутация:   0  


Цитата(molchanoviv @ 29.6.2010, 10:01) *
Цитата(AntonH851 @ 29.6.2010, 9:54) *
не получилось...

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



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

Хотя каталог такой существует...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 29.6.2010, 9:21
Сообщение #6


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

Спасибо сказали: 41 раз(а)




Репутация:   5  


Слеши. В explorer-е слеши в другую сторону. Т.е. путь должен выглядеть как С:\QP\GTD\debug\10101110_010610_0002052
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 29.6.2010, 9:30
Сообщение #7


фрилансер
******

Группа: Участник
Сообщений: 2900
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


QDir::absolutePath ()
и
QDir::toNativeSeparators()

:)

Сообщение отредактировал Алексей1153 - 29.6.2010, 9:31
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AntonH851
  опции профиля:
сообщение 29.6.2010, 9:35
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 66
Регистрация: 20.2.2010
Из: Шебекино
Пользователь №: 1475

Спасибо сказали: 1 раз(а)




Репутация:   0  


Цитата(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
Сообщение #9


фрилансер
******

Группа: Участник
Сообщений: 2900
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


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

Написать свою реализацию - это всегда полезно в плане тренировки, но пользоваться после этого лучше готовым средством :) К тому же, у нас тут кроссплатформенность
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 13.7.2020, 10:13