Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.047 c
14-1117508878
Mike Kouzmine
2005-05-31 07:07
2005.06.29
Такая Европа нам не нужна!


6-1112272722
spam
2005-03-31 16:38
2005.06.29
Как програмно узнать, что пришол пакет на опредилённый порт?


4-1115562724
4dept
2005-05-08 18:32
2005.06.29
Как расшарить папку только на чтение в NT


1-1117889389
Петр
2005-06-04 16:49
2005.06.29
Утечка памяти


1-1117921250
Green_Templar
2005-06-05 01:40
2005.06.29
screen.cursor





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский