ActiveX-объекты
ActiveX-объекты
ActiveX-объекты — это специальные программы, которые не могут быть выполнены непосредственно двойным щелчком кнопкой мыши на файле ActiveX-объекта, но могут быть выполнены под руководством операционной системы Windows. Для этого применяются либо операции вставки и внедрения, либо команда rundll32 . exe. Да, несмотря на то, что ActiveX-объекты не являются полноценными программами, некоторые из них также возможно вызвать как программы. Например, попробуем выполнить команду rundll32 amovie.ocx, RunDll / play /close E:musicМультфильмыМузыка звезд5.wma (не забудьте изменить путь и имя музыкального файла на свои). Результат выполнения этой команды можно увидеть на рис. 1.13.
Рис. 1.13. Пример вызова ActiveX-объекта
ПРИМЕЧАНИЕ
Плюсом таких вызовов является то, что каждый вызванный ActiveX-объект выполняется как отдельная программа. Другими словами, если вы несколько раз вызовете один и тот же ActiveX-объект, то будет открыто несколько ActiveX-объектов (в данном случае проигрывателей), а не только один.
Рассмотрим приведенный выше вызов ActiveX-объекта детальней: rundll32 amovie.ocx, RunDll /play /close E:musicМультфильмыМузыка звезд5.wma. Как можно заметить, он практически ничем не отличается от вызова функций из библиотек — amovie.ocx является файлом, из которого берется функция, RunDll является самой функцией, а путь к музыкальному файлу — ее аргументом. Кроме пути к музыкальному файлу, используется еще два аргумента функции — /play и /close. Первый из них говорит о том, что данный ActiveX-объект необходимо вызвать и начать проигрывать, а второй аргумент означает, что после выполнения своей задачи ActiveX-объект должен быть автоматически закрыт.
Кроме функции RunDll, ActiveX-объект amovie.ocx (да и большинство других ActiveX-объектов) поддерживает еще две функции — DllRegisterServer и DllUnregisterServer. Первая из них регистрирует ActiveX-объект в реестре операционной системы, а вторая удаляет из реестра всю информацию об ActiveX-объекте.
ПРИМЕЧАНИЕ
Даже если ActiveX-объект не будет зарегистрирован в системе, его все равно возможно вызвать с помощью функции RunDll или другой подобной функции.
ActiveX-объект amovie.ocx также поддерживает функцию LoadFilterGraph, которая используется для загрузки графического фильтра, но, по мнению автора, данной функции нельзя передать сам путь к фильтру.
Теперь вкратце рассмотрим функции некоторых ActiveX-объектов, которые могут находиться в вашей операционной системе (не забывайте, что эти ActiveX-объекты, как и все остальные, поддерживают и такие функции, как DllRegisterServer и DllUnregisterServer).
? rundll32 HHCTRL.OCX, doWinMain — выполнение этой команды приводит к вызову диалога HTML Help, приведенного на рис. 1.14. Содержимое диалога (файлы connect.inf и т.д.) находится в каталоге %userprofile%MZ. Если же данная папка отсутствует в системе, то будет выводиться ошибка о невозможности загрузки страницы.
Этот ActiveX-объект расположен в каталоге %systemroot%SYSTEM32.
? rundll32 msdxm.ocx, RunDll /play /stop «путь к музыкальному файлу» — вызов данной функции воспроизводит указанный музыкальный файл с помощью Проигрывателя Windows Media.
Этот ActiveX-объект расположен в каталоге %systemroot%SYSTEM32.
Рис. 1.14. Вызов программы HTML Help
Вот и все стандартные ActiveX-объекты, которые, кроме DllRegisterServer и DllUnregisterServer, поддерживают дополнительные функции.