Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как из своей проги запустить какой либо экзешник? запустить другой экзэшник 
:(
    Опции темы
Dreamuchiy
Дата 24.5.2007, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



как запустить из своей формы любой экзэшник?
--------------------
Мечтаю написать в карман Биллу Гейтсу... Или как минимум посмотреть крах Майкрософт...
PM MAIL   Вверх
Klin
Дата 24.5.2007, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Делается это просто:
Код

 ShellExecute(NULL, "open", "c:\\myprog.exe", NULL, NULL, SW_SHOW);


Таким образом можно открывать и инет страницы и рабочие документы


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Palladin
Дата 25.5.2007, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

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



Или 
Код

WinExec(путь к файлу,1);
 smile 

Это сообщение отредактировал(а) Palladin - 25.5.2007, 00:29


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
Anikmar
Дата 25.5.2007, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

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



Или
CreateProcess
 smile 
PM MAIL ICQ   Вверх
Klin
Дата 25.5.2007, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



или пущай пользователь сам запускает smile


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
sp75
Дата 25.5.2007, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Еще вариант:

  spawnlp(P_WAIT,"auto.bat","auto.bat", NULL);

В чем ее отличие , так это заставить ждать приложение пока загрутся внешняя прога. (P_WAIT)
PM MAIL   Вверх
Klin
Дата 25.5.2007, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Тогда process.h надо подключать


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
mr.Anderson
Дата 25.5.2007, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



Klin, ну и что. Зато это наиболее легкий метод создания независимого процесса. Я это дело через execlp делаю. Очень удобно. ShellExecute порождает процесс, зависимый от вызвавшей программы - закрываем инициатора - закрываем и дочерний процесс. Не всегда удобно.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Klin
Дата 25.5.2007, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(mr.Anderson @  25.5.2007,  13:06 Найти цитируемый пост)
Не всегда удобно.

Зависит от задачи.

Цитата(mr.Anderson @  25.5.2007,  13:06 Найти цитируемый пост)
Klin, ну и что. Зато это наиболее легкий метод создания независимого процесса. 

Ничего против не имею, просто предупредил, чтобы не возникло постов типа "Нет такой функции" или "Функция не работает".


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
mr.Anderson
Дата 25.5.2007, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



А, ну тогда все нормально. smile
Цитата
Зависит от задачи.

Само собой. Поэтому я и написал "не всегда".


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
2508
Дата 26.5.2007, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А как, чтобы вызвавшый процесс ждал окончания/завершения вызванного процесса?
PM MAIL WWW   Вверх
Klin
Дата 26.5.2007, 17:49 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Помню, что управление передать - SetForegroundWindow, ну а про ожидание буду вспоминать

Добавлено @ 17:57
Вот, можно так:
Код
 
STARTUPINFO si;

  ZeroMemory(&si, sizeof(STARTUPINFO));

  si.cb=sizeof(STARTUPINFO);
  si.wShowWindow=SW_SHOWNORMAL;

  PROCESS_INFORMATION pi;

  if(CreateProcess(NULL,
                   "c:\\windows\\notepad.exe ",
                   NULL,
                   NULL,
                   FALSE,
                   CREATE_DEFAULT_ERROR_MODE | NORMAL_PRIORITY_CLASS,
                   NULL,
                   NULL,
                   &si,
                   &pi))
  {
    CloseHandle(pi.hThread);                    // освобождаем ресурсы
    WaitForInputIdle(pi.hProcess, INFINITE);    // ждем окончания инициализации запущенного процесса
    WaitForSingleObject(pi.hProcess, INFINITE); // ждем завершения процесса

    CloseHandle(pi.hProcess);                   // освобождаем ресурсы
  }


Это сообщение отредактировал(а) Klin - 26.5.2007, 17:59


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
kefir01
Дата 27.11.2007, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Такая ситуация. Есть прога (project1.exe) и mysql в той же папке. В смысле:


\project1.exe
\mysql -> bin -> mysqld.exe

Команда для запуска мускула понимаю примерно такая
Код

ShellExecute(NULL, "open", "mysql\\bin\\mysqld.exe", " -P 3306", NULL, SW_HIDE);


Пробую ставить ее в эту часть кода Project.cpp 

Код

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
        try
        {
                 ShellExecute(NULL, "open", "mysql\\bin\\mysqld.exe", " -P 3306", NULL, SW_HIDE); //запускаю мускул до инициализации приложения
                 Application->Initialize();
                 Application->Title = "ibDB - Óïðàâëåíèå áàçîé Äàííûõ";
                 Application->CreateForm(__classid(TForm1), &Form1);
                 Application->CreateForm(__classid(TForm2), &Form2);
                 Application->CreateForm(__classid(TForm3), &Form3);
                 Application->Run();
        }
        catch (Exception &exception)
        {
                 Application->ShowException(&exception);
        }
        catch (...)
        {
                 try
                 {
                         throw Exception("");
                 }
                 catch (Exception &exception)
                 {
                         Application->ShowException(&exception);
                 }
        }
        return 0;
}

Прога запускается, висит в процессах, но компонент ADOConnection не воспринимает его. Что я не так сделал?

UPD: Эту проблему решил - был глюк в свойствах подключения. А как сделать так, чтобы мускул убивался при закрытии приложения?

Это сообщение отредактировал(а) kefir01 - 27.11.2007, 01:02
PM MAIL   Вверх
xvr
Дата 27.11.2007, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(kefir01 @ 27.11.2007,  00:19)
UPD: Эту проблему решил - был глюк в свойствах подключения. А как сделать так, чтобы мускул убивался при закрытии приложения?

Вызови mysqladmin shutdown
PM MAIL   Вверх
Lazin
Дата 27.11.2007, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(mr.Anderson @  25.5.2007,  12:06 Найти цитируемый пост)
ShellExecute порождает процесс, зависимый от вызвавшей программы - закрываем инициатора - закрываем и дочерний процесс. Не всегда удобно. 

Это не обязательно, зависит от того как вызывать.
PM MAIL Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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