Вчимося робити Autorun на Delphi, VR-online – безкоштовний електронний журнал для всіх

Отже, створювай новий проект, як це робиться, я думаю, ти вже знаєш =) У розділі uses додай ShellAPI (саме в цьому модулі знаходиться функція). Кидай на фому три кнопки, та й одну картинку для краси. Назви кнопки ось так - "Установка", "Запуск", "ReadME". Створи для кожного з них обробник події OnClick. Тепер доводь їх до такого виду:

Давай розберемося, що тут написано. Як ти, напевно, вже помітив, у кожному обробнику ми використовуємо ту саму функцію ShellExecute. Що це за функція? Ця функція може відкрити або надрукувати певний файл. Тобто. наприклад, із файлами типу ".mp3" у тебе пов'язаний Winamp "winamp.exe" і запуск файлу "cool.mp3" призведе до того, що буде запущено Winamp і в нього буде передано параметр з ім'ям файлу, тобто. відкрито файл "cool.mp3", і почнеться його відтворення.

Функція описана так:

Вона має 6 параметрів:

1. hWnd: Хендл батька запускається програми. Ми вказали Handle, тобто. хендл своєї програми.

2. Operation: Рядок, що визначає команду виконання. Може містити: "open" - відкрити файл, визначений параметром FileName. "print" - надрукувати файл, визначений параметром FileName. "explore" - відкрити папку, визначену параметром FileName. У нас цей параметр дорівнює nil, отже, за умовчанням виконається операція "open".

3. FileName: Визначає ім'я файлу чи папки для відкриття чи друку. Ось цей параметр цікавить нас найбільше. Тут вказуємо, який файл папку програму ми хочемо відкрити. Наприклад, натисканням другої кнопки ми запускаємо калькулятор.

4. Parameters: визначає параметри, що передаються при запуску програми, що виконується. Під час запуску документа його використовувати не треба.Параметр може дорівнювати Nil, саме цьому він у нас і дорівнює. Тому що нам не потрібні якісь додаткові параметри.

5. Directory: визначає каталог за промовчанням (робочий каталог). Отримати\установити можна за допомогою функції GetCurrentDirectory, SetCurrentDirectory. Якщо nil, то використовується цей каталог. У нашому випадку – це каталог, звідки запустилася наша прога.

6. ShowCmd: визначає режим відкриття файлу. Константа відкриття\показу SW може дорівнювати:

SW_HIDE - Ховає вікно та переводить в активний стан інше вікно. SW_MINIMIZE - Мінімізує вікно та активізує вікно верхнього рівня у списку менеджера вікон. SW_RESTORE - Діє так само, як і SW_SHOWNORMAL. SW_SHOW - Активізує вікно та виводить його в поточній позиції та поточного розміру. SW_SHOWDEFAULT - Активізує вікно та виводить його за допомогою поточних умовчань. SW_SHOWMAXIMIZED - Активізує вікно та виводить його з максимально розміром. SW_SHOWMINIMIZED - Активізує вікно та виводить його у вигляді піктограми. SW_SHOWMINNOACTIVATE - Виводить вікно як піктограму; Колишнє активне в даний момент вікно залишається активним. SW_SHOWNA - Виводить вікно з урахуванням його стану на даний момент; активне зараз вікно залишається активним. SW_SHOWNOACTIVATE - Виводить вікно в його колишній позиції та колишнього розміру; активне на даний момент вікно залишається активним. SW_SHOWNORMAL - Активізує вікно та виводить його на екран. Якщо вікно було збільшено або зменшено до піктограми, Windows відновить початкове положення і розмір вікна. SW_SHOWSMOOTH - Виводить вікно так, щоб воно найменше перекривалося з іншими вікнами.

У нас ця константа дорівнює SW_SHOW, тому що нам потрібно, щоб фокус передався вікну, що запускається. Функція ShellExecute повертає хендлвідкритий додаток. Якщо значення, що повертається менше 32, значить, сталася помилка. Ось основні помилки, що повертаються:

0 - Системі не вистачає пам'яті, файл, що виконується зіпсований або бракує ресурсів. ERROR_FILE_NOT_FOUND - файл не знайдено. ERROR_PATH_NOT_FOUND - шлях не знайдено. ERROR_BAD_FORMAT - EXE -Файл неправильний (не-Win32.EXE або помилка в .EXE). SE_ERR_ACCESSDENIED - ОС відкинула доступ до файлу. SE_ERR_DLLNOTFOUND - динамічна бібліотека(.DLL) не виявлена. SE_ERR_FNF - файл не знайдено. SE_ERR_NOASSOC - немає програми асоційованого з цим типом файлу. SE_ERR_OOM - недостатньо пам'яті для завершення операції. SE_ERR_PNF - шлях не знайдено.