- 3.5. Работа с приложениями
- Типы приложений
- Запуск приложений
- Запуск приложений с помощью стартового меню
- Запуск приложения, ярлык которого расположен на рабочем столе
- Запуск приложений с помощью кнопок панели инструментов
- Запуск приложения с помощью диалогового окна Выполнить
- Поиск приложений
- Запуск приложения, хранящегося на сетевом запоминающем устройстве
- Запуск приложения с помощью окна Сеанс MS-DOS
- Запуск резидентных программ
- Запуск приложений с помощью программы Проводник
- Завершение работы приложения
- Принципы работы Windows–приложения. Обработка сообщений. Принципы вывода данных в окно
3.5. Работа с приложениями
Операционная система Windows 98/2000 способна самостоятельно справиться с решением самых разнообразных задач. Однако и ее возможности не безграничны. Рано или поздно вы захотите инсталлировать новые приложения, которые позволят более полно использовать возможности персонального компьютера.
Операционная система Windows 98/2000 позволяет пользователям работать с несколькими приложениями одновременно. При этом переключение между запущенными приложениями можно осуществлять посредством соответствующих кнопок на панели задач.
В Windows 98/2000 приложение можно запустить несколькими способами, например с помощью программы Проводник или Стартового меню. Прежде чем приступить к детальному описанию этих и других способов запуска приложений в Windows, сделаем классификацию всех существующих приложений.
Типы приложений
Принципы, на основании которых в Windows осуществляется работа с тем или иным приложением, во многом зависят от того, разрабатывалось данное приложение для операционной системы Windows 98/2000 (или Windows 95) или же было ориентировано на работу с другой операционной системой. Основываясь на этом, все приложения можно классифицировать следующим образом:
- Приложения, разработанные специально для Windows 95 или Windows 98/2000. Эти приложения лучше других используют возможности 32-разрядной операционной системы.
- Приложения, разработанные для графической оболочки Windows 3.х. Данные приложения корректно работают в Windows 98/2000, однако не используют многие достоинства этой операционной системы.
- Приложения, разработанные для операционной системы MS-DOS. Эти приложения можно запускать в операционной системе Windows 98/2000, однако при их выполнении иногда могут возникать конфликты.
- Резидентные программы, разработанные для операционной системы MS-DOS. Эти программы могут работать в операционной системе Windows 98/2000 лишь при наличии определенных условий.
Запуск приложений
Запуск приложения в Windows 98/2000 может быть осуществлен одним из следующих способов:
- Посредством выбора соответствующей команды в стартовом меню.
- С помощью ярлыка, расположенного на рабочем столе.
- С помощью кнопки, расположенной на одной из панелей инструментов панели задач.
- С помощью диалогового окна Выполнить.
- С помощью программы Проводник.
- С помощью программы Сеанс MS-DOS.
Запуск приложений с помощью стартового меню
Чтобы запустить приложение с помощью стартового меню, необходимо выполнить следующие действия:
1. Выполните щелчок мышью на кнопке Пуск.
2. В открывшемся стартовом меню (это его первый уровень) будут отображены имена различных подменю и команд. Переместите курсор мыши на меню Программы.
3. В открывшемся подменю также будут отображены имена различных подменю и команд. Отличить меню от команды очень просто: справа от имени любого меню всегда отображается маленький черный треугольник. Чтобы увидеть содержимое определенного меню (открыть меню), достаточно переместить указатель на его имя. Откройте нужное меню.
4. В открывшемся подменю выберите команду, запускающую соответствующее приложение.
Запуск приложения, ярлык которого расположен на рабочем столе
В Windows 98/2000 на рабочем столе располагаются ярлыки различных приложений и документов. Для запуска приложения, ярлык которого расположен на рабочем столе, необходимо выполнить двойной щелчок мышью на этом ярлыке или выполнить на ярлыке щелчок правой кнопкой мыши и выбрать в открывшемся контекстном меню команду Открыть.
Если вы часто работаете с тем или иным приложением, рекомендуется поместить на рабочий стол ярлык данного приложения.
Запуск приложений с помощью кнопок панели инструментов
В Windows 98/2000 существует возможность запуска приложений с помощью кнопок панелей инструментов, расположенных на панели задач. Так, например, вы можете перетащить на панель инструментов пиктограмму или ярлык любого приложения (рис. 3.14) для того, чтобы создать в панели инструментов кнопку.
Рис. 3.14. Панель быстрого запуска на Панели задач
Впоследствии вы сможете быстро запускать соответствующее приложение, просто щелкая мышью по кнопке. Для того чтобы удалить кнопку с панели инструментов, достаточно выполнить на этой кнопке щелчок правой кнопкой мыши и выбрать в открывшемся контекстном меню команду Удалить.
Запуск приложения с помощью диалогового окна Выполнить
С помощью диалогового окна Выполнить можно запустить любое приложение. Однако запускать приложения с помощью этого окна рекомендуется лишь в том случае, если в стартовом меню отсутствует команда запуска данного приложения. Для запуска приложения с помощью диалогового окна Выполнить необходимы следующие действия:
1. Открыть стартовое меню (Пуск).
2. Выбрать команду Выполнить.
3. B поле ввода появившегося диалогового окна ввести команду (если она вам известна) запуска нужного приложения. Например, для запуска приложения Word для Windows необходимо ввести команду с: \windows\winword.exe (рис. 3.15).
Рис. 3.15. Окно команды Выполнить
4. Если вы раньше уже запускали данное приложение с помощью диалогового окна Выполнить, то вместо того, чтобы вновь вводить команду запуска, вы можете выбрать ее в поле списка Открыть.
5. Если вы не знаете команды, с помощью которой можно запустить нужное вам приложение, выполните щелчок на кнопке Обзор. В появившемся после этого диалоговом окне отметьте необходимый исполняемый файл и нажмите кнопку Открыть.
Поиск приложений
Если команда, посредством которой запускается приложение, вам неизвестна, следует открыть диалоговое окно Выполнить и нажать кнопку Обзор. После этого на экране появится диалоговое окно Обзор, с помощью которого можно осуществить поиск нужного приложения.
В диалоговом окне Обзор отображаются имена файлов и папок, хранящихся в текущей папке (по умолчанию в данном окне отображаются только имена папок и исполняемых файлов).
Запуск приложения, хранящегося на сетевом запоминающем устройстве
С помощью диалогового окна Выполнить можно запускать и те приложения, которые хранятся на сетевых запоминающих устройствах.
Откройте диалоговое окно Выполнить и нажмите кнопку Обзор. Чтобы в открывшемся окне отобразить содержимое какого-либо сетевого устройства, необходимо выбрать имя этого устройства в поле списка Где искать.
Если у вас нет прав доступа к данному сетевому запоминающему устройству (папке или приложению), то на экране появляется соответствующее сообщение об ошибке.
Запуск приложения с помощью окна Сеанс MS-DOS
Любое приложение можно запустить и из окна Сеанс MS-DOS. Прежде чем сделать это, следует перейти в каталог, где это приложение хранится. Например, чтобы запустить приложение Word для Windows, которое хранится в каталоге C:\WORD, следует сначала ввести команду
а затем команду
Запуск резидентных программ
Запуск резидентных программ в Windows 98/2000 осуществляется точно так же, как и запуск других программ. После загрузки резидентные программы остаются в оперативной памяти компьютера.
Чтобы активизировать резидентную программу, ей необходимо каким-то образом передать управление, например, с помощью асинхронного (аппаратного) прерывания. Наиболее часто резидентные программы активизируются посредством нажатия определенной комбинации клавиш. Если вы решили загрузить ту или иную резидентную программу, не забывайте о следующих вещах:
- Если резидентная программа запущена из окна Сеанс MS-DOS, то она будет функционировать точно так же, как и в системе DOS.
- В частности, это означает, что резидентная программа автоматически удаляется из оперативной памяти после закрытия названного окна.
Запуск приложений с помощью программы Проводник
Запустить нужное приложение можно с помощью программы Проводник. Для этого следует отобразить в окне Обзор необходимый исполняемый файл (или PIF-файл) и выполнить щелчок на его пиктограмме. Исполняемые файлы, т.е. файлы с расширениями .ЕХЕ, .СОМ, .ВАТ, обозначаются в окне программы Проводник унифицированной пиктограммой.
Завершение работы приложения
В большинстве случаев завершить работу Windows-приложения можно посредством выбора команды Выход в меню Файл. При этом все изменения, внесенные вами, будут сохранены, после чего работа приложения завершится. Существуют и другие методы завершения работы приложения:
- Выберите команду Выход меню Файл.
- Выполните щелчок на кнопке Закрыть окна приложения.
- Выполните двойной щелчок на кнопке вызова системного меню окна приложения.
- Выполните щелчок правой кнопкой мыши на кнопке соответствующего приложения в панели задач и выберите в появившемся меню команду Закрыть.
- Нажмите комбинацию клавиш Alt+F4.
Принципы работы Windows–приложения. Обработка сообщений. Принципы вывода данных в окно
1. Определение класса окна (структура, определяющая свойства окна) — задание свойств окна.
2. Регистрация окна. Функция RegisterClass возвращает уникальный «описатель класса окна» типа ATOM. Если при регистрации класса произошла ошибка, это значение будет равно нулю. Чтобы узнать, что произошло, можно вызвать функцию GetLastError().
3. Создание окна данного класса.
4. Отображение окна. ShowWindow(hWnd, mode); //Показать окно
5. Запуск цикла обработки сообщений. Задается оператором while, аргументом которого является функция GetMessage(&msg, NULL, 0, 0).
9. Библиотеки динамической компоновки в С++ и C#. Построение библиотек и методы их использования.
Библиотеки являются хорошим способом повторного использования кода. Вместо повторной реализации одних и тех же процедур в каждой программе, вы создаете их один раз и затем ссылаетесь на них из других приложений. Поместив код в библиотеке DLL, вы сэкономите место в каждом приложении, которое ссылается на этот код, а также сможете обновлять DLL без перекомпиляции всех приложений.
Практически невозможно создать приложение Windows, в котором не использовались бы библиотеки DLL. В DLL содержатся все функции Win32 API и несчетное количество других функций операционных систем Win32.
Вообще говоря, DLL — это просто наборы функций, собранные в библиотеки. Однако, в отличие от своих статических родственников (файлов .lib), библиотеки DLL не присоединены непосредственно к выполняемым файлам с помощью редактора связей. В выполняемый файл занесена только информация об их местонахождении. В момент выполнения программы загружается вся библиотека целиком. Благодаря этому разные процессы могут пользоваться совместно одними и теми же библиотеками, находящимися в памяти. Такой подход позволяет сократить объем памяти, необходимый для нескольких приложений, использующих много общих библиотек, а также контролировать размеры ЕХЕ-файлов.
Однако, если библиотека используется только одним приложением, лучше сделать ее обычной, статической. Конечно, если входящие в ее состав функции будут использоваться только в одной программе, можно просто вставить в нее соответствующий файл с исходным текстом.
Чаще всего проект подключается к DLL статически, или неявно, на этапе компоновки. Загрузкой DLL при выполнении программы управляет операционная система. Однако, DLL можно загрузить и явно, или динамически, в ходе работы приложения.
Загрузка неявно подключаемой DLL.
При запуске приложение пытается найти все файлы DLL, неявно подключенные к приложению, и поместить их в область оперативной памяти, занимаемую данным процессом. Поиск файлов DLL операционной системой осуществляется в следующей последовательности:
· Каталог, в котором находится ЕХЕ-файл.
· Текущий каталог процесса.
· Системный каталог Windows.
Если библиотека DLL не обнаружена, приложение выводит диалоговое окно с сообщением о ее отсутствии и путях, по которым осуществлялся поиск. Затем процесс отключается.
Если нужная библиотека найдена, она помещается в оперативную память процесса, где и остается до его окончания. Теперь приложение может обращаться к функциям, содержащимся в DLL.
Динамическая загрузка и выгрузка DLL.
Вместо того, чтобы Windows выполняла динамическое связывание с DLL при первой загрузке приложения в оперативную память, можно связать программу с модулем библиотеки во время выполнения программы (при таком способе в процессе создания приложения не нужно использовать библиотеку импорта). В частности, можно определить, какая из библиотек DLL доступна пользователю, или разрешить пользователю выбрать, какая из библиотек будет загружаться. Таким образом можно использовать разные DLL, в которых реализованы одни и те же функции, выполняющие различные действия. Например, приложение, предназначенное для независимой передачи данных, сможет в ходе выполнения принять решение, загружать ли DLL для протокола TCP/IP или для другого протокола.
Загрузка обычной DLL.
Первое, что необходимо сделать при динамической загрузке DLL, — это поместить модуль библиотеки в память процесса. Данная операция выполняется с помощью функции ::LoadLibrary, имеющей единственный аргумент — имя загружаемого модуля.
Стандартным расширением файла библиотеки Windows считает .dll, если не указать другое расширение. Если в имени файла указан и путь, то только он будет использоваться для поиска файла. В противном случае Windows будет искать файл по той же схеме, что и в случае неявно подключенных DLL, начиная с каталога, из которого загружается exe-файл, и продолжая в соответствии со значением PATH.
Когда Windows обнаружит файл, его полный путь будет сравнен с путем библиотек DLL, уже загруженных данным процессом. Если обнаружится тождество, вместо загрузки копии приложения возвращается дескриптор уже подключенной библиотеки.
Если файл обнаружен и библиотека успешно загрузилась, функция ::LoadLibrary возвращает ее дескриптор, который используется для доступа к функциям библиотеки.
Перед тем, как использовать функции библиотеки, необходимо получить их адрес. Для этого сначала следует воспользоваться директивой typedef для определения типа указателя на функцию и определить переменную этого нового типа. Затем следует получить дескриптор библиотеки, при помощи которого и определить адреса функций.
Адрес функции определяется при помощи функции ::GetProcAddress, ей следует передать имя библиотеки и имя функции. Последнее должно передаваться в том виде, в котором экспортируется из DLL.
После завершения работы с библиотекой динамической компоновки, ее можно выгрузить из памяти процесса с помощью функции ::FreeLibrary.
Загрузка MFC-расширений динамических библиотек.
При загрузке MFC-расширений для DLL (подробно о которых рассказывается далее) вместо функций LoadLibraryи FreeLibrary используются функции AfxLoadLibrary и AfxFreeLibrary. Последние почти идентичны функциям Win32 API. Они лишь гарантируют дополнительно, что структуры MFC, инициализированные расширением DLL, не были запорчены другими потоками.
Динамическая загрузка применима и к ресурсам DLL, используемым MFC для загрузки стандартных ресурсов приложения. Для этого сначала необходимо вызвать функцию LoadLibrary и разместить DLL в памяти. Затем с помощью функции AfxSetResourceHandle нужно подготовить окно программы к приему ресурсов из вновь загруженной библиотеки. В противном случае ресурсы будут загружаться из файлов, подключенных к выполняемому файлу процесса. Такой подход удобен, если нужно использовать различные наборы ресурсов, например, для разных языков.
Дисциплины: «Базы данных», «Корпоративные информационные системы», «Проектирование информационных систем»