Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CString и WinExec 
:(
    Опции темы
fanruten
Дата 8.6.2006, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 5.6.2006

Репутация: нет
Всего: нет



Надо выполнить следующий код

CFileDialog fileDlg(.....)

Код

if (fileDlg.DoModal() == IDOK)
{
        str.Format(_T("app.exe %s"), fileDlg.GetPathName());
        WinExec(str, 1);
}


Проблема в том что WinExec непринимает UNICODE строку.

Как можно преобразовать CString к LPCSTR ?   

Это сообщение отредактировал(а) fanruten - 8.6.2006, 18:01
PM MAIL   Вверх
vvpC
Дата 8.6.2006, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 20.5.2006
Где: Москва

Репутация: нет
Всего: нет



Цитата(fanruten @  8.6.2006,  17:30 Найти цитируемый пост)
Проблема в том что WinExec непринимает UNICODE строку.
Как можно преобразовать CString к LPCSTR ?

Юникод непричем, да и преобразовывать ничего не надо - имеются встроенные операторы.. Просто, если командная строка содержит пробелы, тогда ее нужно заключать в двойные кавычки. А када WinExec захочет юникода smile это будет означать что мы уже в Китае... или Китай уже кругом, или микрософт вдруг стал поддерживать Win16..  
PM MAIL WWW   Вверх
DeadSoul
Дата 8.6.2006, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 2
Всего: 11



Цитата(fanruten @  8.6.2006,  17:30 Найти цитируемый пост)
Проблема в том что WinExec непринимает UNICODE строку.

Ты в этоу уверен?

Если точно не понимает, то смотри ShellExecute\CreateProccess 


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
fanruten
Дата 9.6.2006, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 5.6.2006

Репутация: нет
Всего: нет



выдавало ошибку:
                          error C2664: 'WinExec' : cannot convert parameter 1 from 'CString' to 'LPCSTR'

Проблему решил так:

Код

if (fileDlg.DoModal() == IDOK)
    {
        CT2CA str (_T("app.exe \"") + fileDlg.GetPathName() + _T("\""));
        WinExec(str, 1);
    }
 
PM MAIL   Вверх
Rapalex
Дата 9.6.2006, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

Репутация: 6
Всего: 8



Так можно но есть классы строк
CStringA - НЕ уникод
CStringW - уникод

в контрукторе класса можно передать CString (преоразовать во что надо) и независимо от настроек таботать будет. 


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0427 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.