Введение в программирование на VBA - eDrive

Введение в программирование на VBA - eDrive Введение в программирование на VBA - eDrive

edrive.narod.ru
from edrive.narod.ru More from this publisher
06.01.2015 Views

10 диспетчеры и т.п. Специальная часть Windows — планировщик — для каждой открытой программы формирует очередь задач и распределяет эти очереди таким образом, чтобы все задачи могли участвовать в едином информационном процессе. Каждая самостоятельная часть выполняемой программы в многозадачной операционной системе Windows ассоциируется с отдельной задачей и проектируется таким образом, что обладает способностью генерировать сообщения о событиях. В сообщении указывается источник события и его характер (щелчок, включение, нажатие клавиши и т.п.). Любая задача может находиться в состоянии выполнения, если ее обслуживает процессор; состоянии готовности, когда она ждет обслуживания; состоянии блокировки в ожидании наступления событий. В соответствии с очередностью, операционная система подключает задачам ресурсы и выделяет защищенное виртуальное адресное пространство в оперативной памяти и на свободных местах магнитных накопителей. В этом пространстве каждая задача функционирует в течение разрешенного отрезка времени, а по завершении его автоматически выгружается системой из памяти, освобождая ресурсы следующей задаче. При этом задачи могут зависеть друг от друга: одна из них занимается подготовкой данных, другая их сортирует, а третья выводит результаты в файл. Пока решается одна задача, следующая готовится к выполнению, не занимая ресурсов. Последовательность решения может быть самой разной в зависимости от приоритета и числа задач в очереди. Очереди отдельных программ не теряются и не перепутываются, а планировщик распределяет время центрального процессора так, чтобы обеспечить его оптимальную загрузку. В ходе выполнения одной группы задач, Windows может обнаружить новую программу, требующую выделения ресурсов. Для такой программы операционная система формирует новую очередь и обрабатывает ее наряду с другими во вновь выделенном адресном пространстве. Выделяя отдельное пространство каждой задаче, система исключает их конфликты. Но существуют программы, которые изначально не спроектированы для многозадачной среды и пытаются монополизировать память и ресурсы. К ним относятся, в частности, программы операционной среды MS DOS. Все задачи подобного типа Windows ставит в одну общую очередь и, отождествляя их с одной задачей, выделяет одно адресное пространство. В случае аварийного завершения любой из них, все остальные однозадачные программы приходится завершать вместе с аварийной и принудительно выгружать из памяти. Для интеграции программ и документов с ранее созданными программными объектами в Windows используются буфер обмена, объектное связывание и встраивание (OLE) и динамический обмен данными (DDE). Через буфер обмена выполняется статическое связывание данных. Технологии OLE и DDE реализуют динамическое внедрение и связывание,

11 регламентируя правила создания документов, включающих в свой состав объекты из различных приложений. Любые данные, которые переносятся из документа, созданного с помощью одной программы (сервера), в документ другой программы (клиента), по терминологии OLE называются объектом. Источник такого объекта представляется обычно областью экрана, которую можно выделить щелчком мыши, чтобы изменить ее масштаб или перенести на новое место. Этот же объект редактируется прямо в исходном файле после его активизации двойным щелчком. Поэтому, если вставляемая информация используется в нескольких документах и во всех должна выглядеть одинаково, динамическому внедрению и связыванию целесообразно отдавать предпочтение перед статическим. Правда, подобная связь может оборваться при переносе клиента или сервера на новое место. Код каждого объекта содержит два особых компонента. Первый из них отвечает за отображение, а второй — за возможность редактирования. Благодаря такой организации, пользователь может либо связываться с объектом из своего документа (link), либо внедрять его в документ (embed). При использовании связи объект хранится отдельно от документа, но после редактирования в документе появляется его обновленное изображение. Если же объект внедряется, в документе отображается его копия. Основными достоинствами OLE являются: • возможность редактирования объекта прямо в приложении; • поддержка встроенных объектов; • возможность устанавливать связи между объектами, встроенными в документы; • «знание» объектом приложения, которым он создан, и поддержка его инструментария; • возможность редактирования объектов, подготовленных на разных языках, и сложных объектов, сделанных другими разработчиками. Создавать взаимосвязанные приложения позволяет и механизм DDE. Его основой является протокол, описывающий обмен данными между активными приложениями, удобный для создания программ одновременной обработки одного объекта из разных приложений. Управление объектами Windows Элементы управления Все электронные документы и инструментальные программы Windows размещаются в файлах — именованных областях накопителей. Каждый файл характеризуется размером, датой создания и обновления, значком и рядом других атрибутов. Разработчики программ и пользователи группируют

10<br />

диспетчеры и т.п. Специаль<strong>на</strong>я часть Windows — планиро<strong>в</strong>щик — для<br />

каждой открытой программы формирует очередь задач и распределяет эти<br />

очереди таким образом, чтобы <strong>в</strong>се задачи могли участ<strong>в</strong>о<strong>в</strong>ать <strong>в</strong> едином<br />

информационном процессе. Каждая самостоятель<strong>на</strong>я часть <strong>в</strong>ыполняемой<br />

программы <strong>в</strong> многозадачной операционной системе Windows ассоциируется<br />

с отдельной задачей и проектируется таким образом, что обладает<br />

способностью генериро<strong>в</strong>ать сообщения о событиях. В сообщении<br />

указы<strong>в</strong>ается источник события и его характер (щелчок, <strong>в</strong>ключение, <strong>на</strong>жатие<br />

кла<strong>в</strong>иши и т.п.).<br />

Любая задача может <strong>на</strong>ходиться <strong>в</strong> состоянии <strong>в</strong>ыполнения, если ее<br />

обслужи<strong>в</strong>ает процессор; состоянии гото<strong>в</strong>ности, когда о<strong>на</strong> ждет<br />

обслужи<strong>в</strong>ания; состоянии блокиро<strong>в</strong>ки <strong>в</strong> ожидании <strong>на</strong>ступления событий. В<br />

соот<strong>в</strong>етст<strong>в</strong>ии с очередностью, операцион<strong>на</strong>я система подключает задачам<br />

ресурсы и <strong>в</strong>ыделяет защищенное <strong>в</strong>иртуальное адресное пространст<strong>в</strong>о <strong>в</strong><br />

операти<strong>в</strong>ной памяти и <strong>на</strong> с<strong>в</strong>ободных местах магнитных <strong>на</strong>копителей. В этом<br />

пространст<strong>в</strong>е каждая задача функционирует <strong>в</strong> течение разрешенного отрезка<br />

<strong>в</strong>ремени, а по за<strong>в</strong>ершении его а<strong>в</strong>томатически <strong>в</strong>ыгружается системой из<br />

памяти, ос<strong>в</strong>обождая ресурсы следующей задаче. При этом задачи могут<br />

за<strong>в</strong>исеть друг от друга: од<strong>на</strong> из них занимается подгото<strong>в</strong>кой данных, другая<br />

их сортирует, а третья <strong>в</strong>ы<strong>в</strong>одит результаты <strong>в</strong> файл. Пока решается од<strong>на</strong><br />

задача, следующая гото<strong>в</strong>ится к <strong>в</strong>ыполнению, не занимая ресурсо<strong>в</strong>.<br />

Последо<strong>в</strong>ательность решения может быть самой разной <strong>в</strong> за<strong>в</strong>исимости от<br />

приоритета и числа задач <strong>в</strong> очереди. Очереди отдельных программ не<br />

теряются и не перепуты<strong>в</strong>аются, а планиро<strong>в</strong>щик распределяет <strong>в</strong>ремя<br />

центрального процессора так, чтобы обеспечить его оптимальную загрузку.<br />

В ходе <strong>в</strong>ыполнения одной группы задач, Windows может об<strong>на</strong>ружить<br />

но<strong>в</strong>ую программу, требующую <strong>в</strong>ыделения ресурсо<strong>в</strong>. Для такой программы<br />

операцион<strong>на</strong>я система формирует но<strong>в</strong>ую очередь и обрабаты<strong>в</strong>ает ее <strong>на</strong>ряду с<br />

другими <strong>в</strong>о <strong>в</strong>но<strong>в</strong>ь <strong>в</strong>ыделенном адресном пространст<strong>в</strong>е. Выделяя отдельное<br />

пространст<strong>в</strong>о каждой задаче, система исключает их конфликты. Но<br />

сущест<strong>в</strong>уют программы, которые из<strong>на</strong>чально не спроектиро<strong>в</strong>аны для<br />

многозадачной среды и пытаются монополизиро<strong>в</strong>ать память и ресурсы. К<br />

ним относятся, <strong>в</strong> частности, программы операционной среды MS DOS. Все<br />

задачи подобного типа Windows ста<strong>в</strong>ит <strong>в</strong> одну общую очередь и,<br />

отождест<strong>в</strong>ляя их с одной задачей, <strong>в</strong>ыделяет одно адресное пространст<strong>в</strong>о. В<br />

случае а<strong>в</strong>арийного за<strong>в</strong>ершения любой из них, <strong>в</strong>се остальные однозадачные<br />

программы приходится за<strong>в</strong>ершать <strong>в</strong>месте с а<strong>в</strong>арийной и принудительно<br />

<strong>в</strong>ыгружать из памяти.<br />

Для интеграции программ и документо<strong>в</strong> с ранее созданными<br />

программными объектами <strong>в</strong> Windows используются буфер обме<strong>на</strong>,<br />

объектное с<strong>в</strong>язы<strong>в</strong>ание и <strong>в</strong>страи<strong>в</strong>ание (OLE) и ди<strong>на</strong>мический обмен данными<br />

(DDE). Через буфер обме<strong>на</strong> <strong>в</strong>ыполняется статическое с<strong>в</strong>язы<strong>в</strong>ание данных.<br />

Технологии OLE и DDE реализуют ди<strong>на</strong>мическое <strong>в</strong>недрение и с<strong>в</strong>язы<strong>в</strong>ание,

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!