Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2012, 12:25   #1
Drugnir
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 262
По умолчанию Запуск приложения ShellExecuteW

Не знаю что делать. Код не работает, но правильный.
Код:
if (ShellExecuteW(Handle, (LPCTSTR)"open", (LPCTSTR)"D:\\1.exe", NULL, NULL, SW_SHOWNORMAL)){
Application->Terminate();
}
запуск был прописан через ShellExecuteA, но мне в UnicodeString нужны были переменные, пришлось поменять и все, больше не работает.
Drugnir вне форума Ответить с цитированием
Старый 30.03.2012, 12:34   #2
Drugnir
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 262
По умолчанию

Сам спросил, сам ответил, вместо ShellExecuteW. написал функцию WinExec и все заработало.
И да странно как-то. Переписал ShellExecuteW на ShellExecuteА
Код:
if (ShellExecuteA(Handle, "open", AnsiString("D:\\1.exe").c_str, NULL, NULL, SW_SHOW)){
Application->Terminate();
}
и тоже все работает, странная функция ShellExecuteW.

Последний раз редактировалось Drugnir; 30.03.2012 в 12:54.
Drugnir вне форума Ответить с цитированием
Старый 30.03.2012, 14:54   #3
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Константные строки в юникоде задаются с префиксом L, а не нагло кастуются к юникодному указателю через приведение типов (LPCTSTR).
EUGY вне форума Ответить с цитированием
Старый 30.03.2012, 14:58   #4
Drugnir
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 262
По умолчанию

Странно, я это с мануала брал, там пример ShellExecuteW был.
Drugnir вне форума Ответить с цитированием
Старый 30.03.2012, 15:17   #5
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

То, что Вы передали адрес первого символа строки char в функцию ожидающую wchar_t*, прикастовав указатель (LPCTSTR), саму строку еще не делает юникодной. Ее надо явно задать. L"open".
EUGY вне форума Ответить с цитированием
Старый 30.03.2012, 16:19   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Странно, я это с мануала брал, там пример ShellExecuteW был.
ссылку на ман можно?
или это в билдере такой?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 30.03.2012, 16:27   #7
Drugnir
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 262
По умолчанию

Где-то находил, не помню. Спасибо вам, но уже не важно, я сделал по-другому. Через ShellExecuteA.
Drugnir вне форума Ответить с цитированием
Старый 30.03.2012, 16:33   #8
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Цитата:
я сделал по-другому. Через ShellExecuteA.
То есть решили не вылезать из заблуждения.
EUGY вне форума Ответить с цитированием
Старый 30.03.2012, 16:41   #9
Drugnir
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 262
По умолчанию

Цитата:
Сообщение от EUGY Посмотреть сообщение
То есть решили не вылезать из заблуждения.
Нет, ваше замечание я учел. За это и благодарен.

А что на счет LPWSTR и LPСWSTR можете сказать? С - это константа я понимаю, их применять можно в таких ситуациях или только (L)"word"?
(LPCTSTR) = TCHAR const*, а не wchar_t const* это я понял)

Последний раз редактировалось Drugnir; 30.03.2012 в 17:07.
Drugnir вне форума Ответить с цитированием
Старый 07.04.2012, 14:42   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
я сделал по-другому. Через ShellExecuteA.
И это через попу... Учитывая, что в более-менее новых виндах все функции юникодовски, а анси-варианты заглушки к ним с преобразованием параметров.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск приложения jkpro Помощь студентам 16 08.11.2009 12:31
Запуск Java Приложения Mega Общие вопросы по Java, Java SE, Kotlin 31 23.03.2009 09:30
Запуск приложения с параметрами Arhangel_bes Помощь студентам 14 12.02.2009 21:35
Запуск приложения Zloy_Doomer Общие вопросы Delphi 2 10.10.2008 13:47
Запуск приложения Артэс Общие вопросы C/C++ 2 07.06.2008 17:38