Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск на основании списка 
:(
    Опции темы
Iliya812
Дата 22.3.2010, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день!

Работаю "Borland C++Builder 6".

на форме размещен элемент управления "Список", в нем перечислены пути к запуску программ:
Program Files\\Microsoft Office\\OFFICE11\\EXCEL
...

при нажатии на строку в списке проихходит запуск выбранной программы.
WinExec((String("c:\\")+ListBox1->Items->Strings[ListBox1->ItemIndex]+".exe").c_str(),SW_SHOW);

////////////////////////////////////////////////////////////////////////////////////////////////

На форме разместить второй список, ввел пути папок:
C:\\001
...

Но когда пытаюсь применить к открытию папок, не работает.
ShellExecute((String(NULL,"open", "", "", "")+ListBox1->Items->Strings[ListBox2->ItemIndex]).c_str(), SW_SHOWNORMAL);

Где ошибка?
PM MAIL   Вверх
xvr
Дата 22.3.2010, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Удваивать слэши не надо - это надо только при записи строковых констант в ТЕКСТЕ программы на С++

PM MAIL   Вверх
Iliya812
Дата 22.3.2010, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Все равно не работает.
PM MAIL   Вверх
SenkraD
Дата 22.3.2010, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Iliya812, а по составленому пути точно есть файл?
что будет написано в MessageBox если написать так:
Код
std::string errorDescription(DWORD error) const
{
    LPVOID buffer = NULL;
    FormatMessageA
    (
          FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM
        , NULL, error, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT)
        , (LPSTR)&buffer, 0, NULL
    );

    std::string message(static_cast<char*>(buffer));
    LocalFree(buffer);
    return message;
}


void __fastcall TSomeForm::someButtonClick(TObject* sender)
{
    STARTUPINFO si = { 0 };
    PROCESS_INFORMATION pi = { 0 };
    si.cb = sizeof(si);

    if (!CreateProcess(NULL,
        (String("c:\\")+ListBox1->Items->Strings[ListBox1->ItemIndex]+".exe").c_str(),
        NULL, NULL, FALSE, 0, NULL, NULL,
        si, &pi)) 
    {
        ShowMessage(errorDescription(GetLastError()).c_str());
        return;
    }
}



--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
Iliya812
Дата 22.3.2010, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Господа вы меня не правильно поняли. На форме элемент управления «Список», в нем перечислены пути к папкам:
C:\001
C:\002
C:\003
...

При нажатии на строку в списке, открывается указанная папка.

PM MAIL   Вверх
SenkraD
Дата 22.3.2010, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Iliya812 @  22.3.2010,  14:20 Найти цитируемый пост)
Но когда пытаюсь применить к открытию папок, не работает.ShellExecute((String(NULL,"open", "", "", "")+ListBox1->Items->Strings[ListBox2->ItemIndex]).c_str(), SW_SHOWNORMAL);Где ошибка?
Что подразумевается под "не работает"? Вообще ничего не открывает? Или открывает не то?



--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
Iliya812
Дата 22.3.2010, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вообще ничего не открывает.
PM MAIL   Вверх
xvr
Дата 22.3.2010, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Строка
Код

ShellExecute((String(NULL,"open", "", "", "")+ListBox1->Items->Strings[ListBox2->ItemIndex]).c_str(), SW_SHOWNORMAL);
крайне подозрительная. 
  •  У ShellExecute явно больше 2х параметров
  •  Конструкция String(NULL,"open", "", "", "") вообще непонятна
  •  Тут: ListBox1->Items->Strings[ListBox2->ItemIndex] индексируются строчки в одном ListBox'е индексом строки от другого ListBox'а

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




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


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

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