Функция ShellExecute
Функция ShellExecute выполняет различные действия над определенным файлом. Файл может быть либо исполнимым файлом, либо файлом документа, либо папкой. Функция может запустить файл на выполнение (для исполняемых файлов), открыть файл документа с помощью соответствующего ему приложения или раскрыть на экране окно с содержимым папки (каталога).
Рассмотрим прототип функции ShellExecute:
HINSTANCE ShellExecute(
HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);
Параметр hwnd указывает идентификатор окна. Это окно будет выступать в качестве родительского окна для запускаемого приложения.
Наибольший интерес представляет параметр lpOperation. Он определяет операцию, которая будет выполняться над файлом, заданным в параметре lpFile. Как ни странно, код операции задается не числовой константой, а строкой, закрытой нулем. В качестве lpOperation можно указать строки “open”, “print” и “explore”. Краткое описание соответствующих операций мы привели в следующей таблице:
Параметр lpOperation | Операция | ||
“open” или значение NULL | Открыть файл, указанный параметром lpFile. Файл может быть исполнимым файлом, документом или папкой | ||
“print” | Распечатать файл, определенный параметром lpFile. Указанный файл должен быть файлом документа | ||
“explore” | Функция позволяет просмотреть содержимое папки, заданной параметром lpFile с помощью приложения Microsoft Explorer |
В случае, если ShellExecute используется для запуска исполнимого файла, вы можете передать ему строку параметров через lpParameters. Во всех остальных случаях указывайте в качестве lpParameters значение NULL.
Параметр lpDirectory задает имя каталога, который используется по умолчанию. В качестве него вы можете указать значение NULL.
Параметр nShowCmd позволяет указать режим, в котором будет запущено приложение. Этот параметр используется только при запуске исполнимых файлов. Если функция ShellExecute используется для открытия или печати файла документа, этот параметр следует указать равным нулю.
Описание возможных значений для параметра nShowCmd вы найдете в документации Microsoft Visual C++ или SDK. Фактически в качестве этого параметра можно использовать значения параметра nCmdShow известной функции WinMain. Например, вы можете указать в качестве параметра nShowCmd значение SW_SHOWNORMAL, который означает, что главное окно приложения должно иметь нормальные размеры и положение на экране, или значение SW_MINIMIZE, которое минимизирует окно запускаемого приложения.
Функция ShellExecute возвращает идентификатор (instance handle) запущенного приложения или идентификатор сервера DDE. Если возникнет ошибка, то функция возвращает ее код, значение которого меньше 32. Например, если указанный вами файл не будет обнаружен, то функция вернет код ERROR_FILE_NOT_FOUND. Полный список ошибок функции ShellExecute вы можете найти в документации.