Недокументированные и малоизвестные возможности Windows XP
Шрифт:
Рис. 1.13. Пример вызова ActiveX-объекта
ПРИМЕЧАНИЕ
Плюсом таких вызовов является то, что каждый вызванный ActiveX-объект выполняется как отдельная программа. Другими словами, если вы несколько раз вызовете один и тот же ActiveX-объект, то будет открыто несколько ActiveX-объектов (в данном случае проигрывателей), а не только один.
Рассмотрим приведенный выше вызов ActiveX-объекта детальней: rundll32 amovie.ocx, RunDll /play /close E:\music\Мультфильмы\Музыка
Кроме функции 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, поддерживают дополнительные функции.
Драйверы
Драйверы — это специальные программы, управляющие работой оборудования, для которого они были написаны. Сейчас практически каждое устройство — от оптической мыши до видеокамеры — требует для своего взаимодействия с компьютером отдельный драйвер. Конечно, не все из этих устройств поставляются со своим собственным драйвером — и это неудивительно, ведь операционная система Windows XP уже включает в себя очень много различных драйверов для многих устройств известных производителей. Все они хранятся на установочном диске (а также в локальной файловой системе) в архиве driver.cab и устанавливаются только при нахождении системой нового оборудования.
Как и ActiveX-объекты, драйверы также
Рис. 1.15. Как правило, уже загруженные драйверы команды не поддерживают
У себя на компьютере автор книги нашел только одну доступную команду, предоставляемую драйвером WINSPOOL.DRV. Это стандартный драйвер Windows, расположенный в каталоге %systemroot%\system32. Он управляет подключением к принтеру (а также передачей ему заданий) и поддерживает такую команду rundll32.exe:rundll32 WINSPOOL.DRV, ConnectToPrinterDlg. Она выводит диалог для подключения к сетевому принтеру и передачи ему задания. Результат выполнения данной команды будет подобным приведенному на рис. 1.16.
Рис. 1.16. Результат выполнения команды rundll32 WINSPOOL.DRV, ConnectToPrinterDlg
ПРИМЕЧАНИЕ
Это диалоговое окно также можно вызвать с помощью команды rundll32.exe PRINTUI.dll, ConnectToPrinterDlg.
Библиотеки
Библиотеки — это специальные файлы с расширением DLL, описывающие все функции, применяемые программой, для которой данная библиотека написана.
Именно библиотеки содержат большинство функций, используемых операционной системой или программой. При этом библиотеки могут применяться как в программах (даже если данная библиотека не была специально написана для соответствующей программы), так и в драйверах, CPL-файлах, ActiveX-объектах и других исполняемых файлах Windows.
Раньше были рассмотрены команды rundll32.exe по файлам, в которых они описаны. Это было более эффективно по той причине, что стандартных CPL-файлов или файлов ActiveX-объектов на компьютере не очень много. Другая картина предстает при взгляде на количество библиотек, зарегистрированных в системе. Чтобы в этом убедиться, достаточно просто заглянуть в каталог %systemroot%\system32 — именно он содержит стандартные библиотеки Windows, которых в этом каталоге можно насчитать сотни. А ведь с каждой программой поставляются еще и свои собственные библиотеки, которые могут находиться как в каталоге, в котором была установлена программа, так и в %systemroot%\system32. Поэтому на этот раз команды rundll32.exe будут рассмотрены не по библиотекам, в которых они описаны, а по действиям, которые они выполняют.
Окна работы с сетью
Первым рассмотренным вопросом будет вопрос вызова различных мастеров, предназначенных для установки тех или иных сетевых компонентов компьютера. Автор знает по своему опыту, как иногда бывает сложно найти в файловой системе Windows ссылки на вызовы тех или иных мастеров настройки не только сетевых компонентов, но и любых других частей Windows. Особенно это актуально после преднамеренного удаления данных ссылок на диалоговые окна — когда пользователь хочет минимизации содержимого Windows и удаляет из меню Пуск или из других мест файловой системы все подряд, что ему кажется ненужным.