Содержание материала

    Если вам нужно запустить новую программу, вам нужно создать новый процесс.

Для этой цели служит системный вызов CreateProcess.

Однако использование этого вызова не очень удобно, потому что приходится задавать множество аргументов,

однако в некоторых случаях без него не обойтись.

Если же вам надо просто запустить программу или открыть файл,

то для этого подходят мене сложные вызовы.

    Легче всего использовать WinExec. Однако Microsoft не рекомендует его использование,

а предлагает пользоваться CreateProcess.

Но для выполнения тех или иных задач он вполне подходит.

Почему же нежелателен вызов WinExec дело все в том, что фактически он содержит обращение

к еще одному устаревшему системному вызову LoadModule, который обращается к CreateProcess

со значениями аргументов по умолчанию. При обращении к WinExec необходимо задать полный путь

к программе или имя EXE файла, расположенного в пути поиска, а также способ

отображения программы (константы SW_HIDE, SW_SHOW и т.д. см. Таблица 2).

    Если вызов функции произошел успешно, то WinExec вернет дескриптор новой

программы (который не может быть меньше 32, т.е. если WinExec возвращает число меньше 32,

то вызов привел к ошибке, коды ошибок см. Таблица 1).

Таблица 1.

 

0 Системе не хватает ресурсов.

ERROR_BAD_FORMAT Некорректный EXE файл (не Win32 EXE файл или EXE файл поврежден).

ERROR_FILE_NOT_FOUND Указанный файл не найден.

ERROR_PATH_NOT_FOUND Указанный путь не найден.

 

 

 

    Еще один простой вызов это - ShellExecute. Этот вызов во многом напоминает WinExec,

однако он поддерживает обработку типов файлов, зарегистрированных в Windows.

Например, если вы с помощью ShellExecute вы попробуете запустить файл с расширением .BMP,

то буде запущена программа Paint или любая другая, которая использует для просмотра графических файлов.

В качестве аргументов ShellExecute принимает дескриптор окна (если есть необходимость в сообщениях об ошибках),

строку, такую как open (открыть), print (напечатать) и explore (исследовать), можно в качестве этой строки передать NULL,

тогда файл указанный вами будет открыт (open). Так же ShellExecute необходимо сообщить имя файла и любые параметры

командной строки (чаще всего NULL), и оставшиеся два аргумента это текущий каталог и константа функции

ShowWindow (как и в WinExec см. Таблица 2).

Таблица 2.

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить