Недокументированные и малоизвестные возможности Windows XP [Роман Александрович Клименко] (fb2) читать постранично, страница - 2


 [Настройки текста]  [Cбросить фильтры]

— все дело в том, что некоторые из функций могут ожидать каких-то специальных параметров, не являющихся статическими и получаемых с помощью других функций.

Еще хуже ситуация может обстоять в том случае, когда функция не принимает никаких параметров, но при своей работе использует содержимое регистров или памяти компьютера. В этом случае вызов данной функции может быть подобен игре в кости — если вам повезет и все необходимые данной функции параметры окажутся корректными, то она сможет выполниться.

Синтаксис программы rundll32.exe довольно прост:

rundl32 «путь к библиотеке и ее имя», «имя функции в данной библиотеке», «список необходимых параметров через запятую»

Но как же можно вызвать данную программу? Помимо использования вызова в коде сценария, о чем будет рассказано в следующих главах книги, программу можно вызвать и с помощью диалога Запуск программы (Пуск►Выполнить) или в поле команды при создании ярлыка. Например, в окне Запуск программы введите команду rundll32 shell32.dll, ShellAboutA и вы сможете увидеть диалог, подобный приведенному на рис. 1.1.

Рис. 1.1. Окно с информационными сведениями об операционной системе


ВНИМАНИЕ

Если регистр, в котором вы вводите команду, для названия параметров функции и библиотек не важен, то для названия функции следует внимательно следить за его написанием как с точки зрения ошибок, так и с точки зрения регистра каждого отдельного символа, иначе программа rundll32.exe не сможет найти необходимую вам функцию. Например, если вы вместо названия функции ShellAboutA введете название ShellaboutA, то rundll32.exe выведет сообщение о невозможности вызова функции, так как ее нет в соответствующей библиотеке.

CPL-файлы

Из нескольких предыдущих абзацев вы узнали практически все теоретические выкладки, которые необходимы для работы с программой rundll32.exe. Сейчас же будут перечислены те возможности, которые данная программа может предоставить пользователю. Начнем с описания функций CPL-файлов.

ПРИМЕЧАНИЕ

Перед тем как будут рассмотрены различные функции, которые могут выполняться с помощью программы rundll32.exe, хотелось бы уточнить способ записи некоторых функций. Чуть выше рассмотрена команда, выполняющая функцию ShellAboutA. Как можно заметить, эта функция заканчивается каким-то совершенно ненужным символом — A. Он говорит системе о том, что функция использует для своей работы символы кодировки ASCII (использование одного байта для представления одного символа). Существует еще один символ, которым может заканчиваться функция — символ W. Он говорит системе о том, что функция использует для своей работы символы в кодировке Unicode (для представления одного символа используются два байта). Так вот, эти символы совершенно не обязательны (хотя в очень редких случаях они необходимы) — если вы введете название функции без последнего символа (А или W), то система сама попробует определить, какая кодировка должна использоваться.

Хотя раньше говорилось, что программа rundll32.exe может вызывать функции библиотек, на самом деле ее возможности намного обширнее — она может вызвать функцию отовсюду, где она указана, будь то библиотека, CPL-файлы или сам исполняемый файл программы.

CPL-файл — это специальный файл (их еще называют апплетами), являющийся диалоговым окном, которое вызывается с помощью Панели управления и предназначено для настройки какого-то отдельного компонента операционной системы. Большую часть ссылок на CPL-файлы можно встретить в папке Панель управления, которую можно открыть либо с помощью меню Пуск, либо с помощью вызова команды control или команды shell:ControlPanelFolder. Но операционная система Windows позволяет вызывать CPL-файлы и с помощью ввода их названия в окне Запуск программы (в этом случае расширение CPL указывать обязательно).

В контексте данной книги содержимое СPL-файлов рассматриваться не будет, предполагается, что читатель уже пользовался ими. Исключением могут быть только те случаи, когда соответствующая команда rundll32.exe зависит от установки тех или иных параметров, доступ к которым можно получить из CPL-файла.

Access.cpl

Апплет предназначен для редактирования различных специальных параметров настройки клавиатуры, звука, мыши или оболочки Windows. Все эти параметры разрабатывались программистами Microsoft специально для людей с ограниченными физическими возможностями, хотя некоторые из представленных в апплете параметров могут быть полезны и в повседневной работе всех пользователей операционной системы Windows XP.

Чтобы вызвать данный апплет с помощью программы rundll32.exe, необходимо использовать команду rundll32 Access.cpl, DebugMain. Вот, в принципе, и все команды, которые поддерживает апплет access.cpl.

Appwiz.cpl

Эта команда открывает диалоговое окно Установка и удаление программ. С его