Автор
|
Тема: запуск проги
|
DEiL |
опубликован 04-09-2001 16:47 MSK
народ, есть в c++ ещё какая-нибудь функция, аналогичная ShellExecute, только чтоб она ТУПО запускала exe файл, а не смотрела в реестре с какой прогой он ассоциирован и уже запускала...? :)
|
stan
|
опубликован 04-09-2001 17:03 MSK
CreateProcess |
lamo
|
опубликован 05-09-2001 07:27 MSK
тэкс. |
DEiL
|
опубликован 05-09-2001 14:24 MSK
значит так. 1) createprocess- функция для извращенцев 8) 2) она мне не подходит. короче, тут такая фигня - у меня есть командная строка, допустим "c:\program files\viewer\viewer.exe c:\program files\half life\hl.exe -dev -console" (просто пример 8)) так вот мне надо запустить c:\program files\viewer\viewer.exe с аргументом c:\program files\half life\hl.exe -dev -console НЕ прибегая к использованию ShellExecute ;) как это сделать?? :)) |
stan
|
опубликован 05-09-2001 14:39 MSK
Я не врубился - почему для извращенцев? Там и параметры задать можно и еще много чего интересного сделать. А если ты не знаешь как ей пользоваться, то можешь попробовать _exec функции (там их вроде несколько разновидностей). |
DEiL
|
опубликован 05-09-2001 17:13 MSK
дык. ты видел сколько там надо аргументов??? :) и вообще, exec не подходит, т.к. там надо указывать имя файла и аргументы, а у меня это всё в одной строке и фиг тут разберёшь, где что, т.к. в пути к файлу есть пробелы 8) |
stan
|
опубликован 05-09-2001 17:35 MSK
А тебе влом параметры подставить !!?? И че за отмазка - неизвестно что за параметры? Разберись и подставь! Я, например, больше никаких функций не знаю. |
m_fox
|
опубликован 05-09-2001 17:50 MSK
Ну в общем-то других описанных API функций-то и нет. ShellExecute сама функцией CreateProcess пользуется. делай строку, какую тебе надо и передавай этой функции. один параметр - сам запускаемый модуль, а другой параметры. |
jerry
|
опубликован 05-09-2001 19:30 MSK
А что system кто нибудь отменил уже :)? пишешь просто: strcat(fcommand, "c:\\program files\\viewer\\viewer.exe"); strcat(fcommand,"c:\\program files\\half life\\hl.exe -dev -console или все что пожелаешь"); system(fcommand);
|
Aldamo
|
опубликован 05-09-2001 20:45 MSK
В CreateProcess первые 2 аргумента могут сбить с толку. Делай так: PROCESS_INFORMATION pi; STARTUPINFO si; // заполняем структуру STARTUPINFO GetStartupInfo(&si); // Создаем строку с именем проги и аргументами LPTSTR lpappname = "myprogram.exe arg1 arg2"; CreateProcess( NULL, // имя будет во 2-м параметре lpappname, // командная строка процесса NULL, // используем атрибуты защиты // процесса по умолчанию NULL, // используем атрибуты защиты потока по умолчанию FALSE, // дескрипторы не наследуются CREATE_DEFAULT_ERROR_MODE, // стандартая обработка // ошибок NULL, // переменные окружения не нужны NULL, // текущий каталог не используем &si, // передаем копию собственной // структуры STARTUPINFO &pi // получим описатель и другую информацию о процессе ); |
Demo_S
|
опубликован 05-09-2001 21:53 MSK
WinExec |
DEiL
|
опубликован 05-09-2001 22:17 MSK
thank you very much :) |
Aldamo
|
опубликован 06-09-2001 07:22 MSK
Note: WinExec function is provided only for compatibility with 16-bit Windows. Win32-based applications should use the CreateProcess function. (Microsoft) |
m_fox
|
опубликован 06-09-2001 11:17 MSK
2jerry: system не является WinAPI функцией, со всеми вытекающими последствиями. |
jerry
|
опубликован 06-09-2001 13:12 MSK
2m_foxНе является. Ну и что? memcpy, к примеру тоже не API.. и какие последствия? |
Flex Ferrum
|
опубликован 06-09-2001 13:45 MSK
2m_fox:Вот, вот. Зато system является законной функций CRTL, и, в данном случае, работает именно через CreateProcess. |
purpe
|
опубликован 06-09-2001 16:09 MSK
думаю, вопрос исчерпан :)http://www.sources.ru/cpp/cpp_vcpp_faq.shtml (в самом конце)
|
DEiL
|
опубликован 06-09-2001 18:51 MSK
Дима, ХВАТИТ рекламить!!!!!!! -)))) |
m_fox
|
опубликован 07-09-2001 06:23 MSK
2jerry: во-первых system запускает программу на выполнение и ждет завершения. Нет никаких средсдв, чтобы закрыть это приложение. Во-вторых memcpy использует API функцию CopyMemory. |