Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.29;
Скачать: CL | DM;

Вниз

Открытие приложения   Найти похожие ветки 

 
viper - omsk   (2005-04-26 19:17) [0]

Подскажите, пожалуйста, как можно из одного приложения запустить другое? Т.е., например, при нажатии на кнопку запускается какой-нибудь exe-шник!


 
begin...end ©   (2005-04-26 19:17) [1]

См. API-функции ShellExecute или CreateProcess.


 
viper - omsk   (2005-04-27 04:42) [2]

Функцию ShellExecute я не нашел, а в CreateProcess куча разных параметров, можно ли описать что каждый из них делает (желательно на примере)!


 
КиТаЯц ©   (2005-04-27 07:39) [3]

> begin...end ©   (26.04.05 19:17) [1]
Какой к черту CreateProcess когда у человека возникает вопрос всего лиш "как запустить exe-шник"?!!!!!
> viper - omsk   (27.04.05 04:42) [2]
Забудь!
Пользуйся ShellExecute или, еще проще, WinExec("Имя ЕХЕ-шника", SW_RESTORE);


 
begin...end ©   (2005-04-28 19:33) [4]

> viper - omsk   (27.04.05 4:42) [2]

> Функцию ShellExecute я не нашел

Описание функции находится в справке по API: Help -> Windows SDK. А чтобы использовать функцию в delphi, достаточно включить в список uses модуль ShellAPI.

> а в CreateProcess куча разных параметров

...большинство из которых может быть равно nil.

> КиТаЯц ©   (27.04.05 7:39) [3]

> Какой к черту CreateProcess когда у человека возникает
> вопрос всего лиш "как запустить exe-шник"?!!!!!

А Вы не задавались вопросом, что понимается под "exe-шником"? Файл с расширением exe или любой файл исполняемого модуля? Проведите эксперимент: возьмите исполняемый файл (какой-нибудь файл с расширением exe) и измените его расширение на какое-нибудь другое -- скажем, на "bin". А затем попробуйте его запустить с помощью ShellExecute. Файл не запустится, хотя его содержимое осталось тем же самым -- поменялось только расширение. А если использовать CreateProcess, то этот файл запустится. Независимо от того, какое у него расширение.

Так что всё дело -- в трактовке исходного вопроса. Она у разных отвечающих может быть разной, и реагировать на это надо, вероятно, спокойнее.


 
Fay ©   (2005-04-28 20:24) [5]

КиТаЯц ©   (27.04.05 7:39) [3]
WinExec - это не кошерно
ShellExecute - не джедайский подход

Если нужно создать процесс - создавай процесс.


 
Fay ©   (2005-04-28 20:25) [6]

2 viper - omsk   (27.04.05 4:42) [2]
void main( VOID )
{
   STARTUPINFO si;
   PROCESS_INFORMATION pi;

   ZeroMemory( &si, sizeof(si) );
   si.cb = sizeof(si);
   ZeroMemory( &pi, sizeof(pi) );

   // Start the child process.
   if( !CreateProcess( NULL, // No module name (use command line).
       "MyChildProcess", // Command line.
       NULL,             // Process handle not inheritable.
       NULL,             // Thread handle not inheritable.
       FALSE,            // Set handle inheritance to FALSE.
       0,                // No creation flags.
       NULL,             // Use parent"s environment block.
       NULL,             // Use parent"s starting directory.
       &si,              // Pointer to STARTUPINFO structure.
       &pi )             // Pointer to PROCESS_INFORMATION structure.
   )
   {
       ErrorExit( "CreateProcess failed." );
   }

   // Wait until child process exits.
   WaitForSingleObject( pi.hProcess, INFINITE );

   // Close process and thread handles.
   CloseHandle( pi.hProcess );
   CloseHandle( pi.hThread );
}


 
КиТаЯц ©   (2005-04-29 08:42) [7]

> 2 begin...end ©   (28.04.05 19:33) [4]
...и реагировать на это надо, вероятно, спокойнее.


Спасибо, что вежливо так отчитали... :)
Согласен что: "...всё дело -- в трактовке исходного вопроса. Она у разных отвечающих может быть разной..."
Моя реакция обусловлена тем, что (как мне показалось) был вопрос начинающего программиста об элементарной вещи (см. "Функцию ShellExecute я не нашел").
А челу предлагают отправится в "дебри API", в результате такой ответ вызывает новый вопрос и ветка разрастается до несуразной величины и потом прямым ходом в "орешник"...

зы. С расширениями помню сам как-то заморачивался... WinExec, кстати, тоже перименованые EXE-шники отлично запускает.


 
viper - omsk   (2005-04-29 10:51) [8]


> WinExec - это не кошерно

Зато работает! Всем спасибо за помощь!



Страницы: 1 вся ветка

Текущий архив: 2005.06.29;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
14-1117709495
Nicolaev Oleg
2005-06-02 14:51
2005.06.29
Сайт запущен :)


14-1117958876
Piter
2005-06-05 12:07
2005.06.29
Что с интернетом?


3-1116476386
dreamse
2005-05-19 08:19
2005.06.29
Какой коммандой удалить базу из SQL сервера ?


1-1118187928
Gopher
2005-06-08 03:45
2005.06.29
внутри .exe


1-1117593375
АлексейСм
2005-06-01 06:36
2005.06.29
Добавление данных из Делфи в таблицу Ворд