Форум: "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