Функция ShellExecute
Функция ShellExecute еще один простой вызов, который можно использовать для запуска программ. Эта функция во многом напоминает WinExec, однако поддерживает обработку типов файлов, зарегистрированных графической оболочкой операционной системы. Например, если при помощи ShellExecute попробовать запустить файл с расширением *.txt,будет запущена программа Notepad или другая программа, которая используется в системе для просмотра текстовых файлов.
HINSTANCE ShellExecute(
HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);
Параметр hwnd - дескриптор окна родительского процесса, которое будет использовано для вывода сообщений при возникновении ошибок.
В качестве параметра lpOperation необходимо передать строку, указывающую какое действие следует выполнить с файлом. Допустимы команды «open»(открыть объект, который может быть исполняемым файлом, документом или папкой), «print» (распечатать файл) или «explore»(открыть папку для обзора в проводнике), «edit»(редактировать файл) и «find» (запускает процесс поиска в указанной папке). В качестве значения данного параметра можно передать NULL, в этом случае указанный объект будет открыт («open»).
Параметры lpFile и lpParameters используются для передачи в функцию имени файла и параметров командной строки (обычно NULL).
lpDirectory - это текущий каталог.
nShowCmd - задает способ отображения окна программы (аналогично WinExec).
Если код возврата функции больше 31, то функция выполнена успешно, иначе при выполнении функции произошла ошибка.
Функцию ShellExecuteможно использовать, например, для того, чтобы открыть корневой каталог диска С.
ShellExecute(handle, "open", "c:\\", NULL, NULL, SW_SHOWNORMAL);
Практически аналогичным системным вызовом является вызов ShellExecuteEx. Этот вызов фактически является полным аналогом ShellExecute,однако в качестве аргумента он принимает указатель на структуру, поля которой во многом совпадают с аргументами вызова ShellExecute.Полезной особенностью функции является то, что ShellExecuteEx помещает в одно из полей этой структуры дескриптор вновь запущенного процесса.