Иногда бывает необходимо просмотреть или изменить системные настройки Windows. И хочется это сделать сразу из программы, а не через «Пуск --> Панель управления --> Нужные настройки…»
Для большинства системных установок Windows предлагает свои компоненты. Существует несколько десятков окон, предлагающих что-либо изменить в системе. Каждое из таких окно можно вызвать из VB, не используя ни одной API-функции. Наборы таких окон находятся в библиотеках Windows'a с расширением ".cpl". Например в библиотеке desk.cpl находятся четыре стандартных окна (точнее одно окно с четырмя закладками): "Фон", "Заставка", "Настройка", "Оформление" (В Windows XP добавилась пятая закладка «Темы»). Для того, чтобы вызвать не просто нужное окно, а ещё и нужную закладку, в параметрах вызова надо установить индекс нужной закладки. Вызов происходит при помощи обычной функции Shell, но немного необычным способом:
Call Shell("rundll32.exe shell32.dll,Control_RunDLL desk.cpl, ,0" )
Откроет окно свойств экрана с закладкой "Фон". А теперь некоторые библиотеки и параметры. Только надо учесть, что состав библиотек и параметров могут зависеть от версии Winduws. Там, где возможно, я укажу отличия.
Экран - desk.cpl
- фон/Рабочий стол = "desk.cpl, ,0" - заставка = "desk.cpl, ,1" - оформление = "desk.cpl, ,2" - настройка/параметры = "desk.cpl, ,3" - темы = "desk.cpl, ,5" (Windows XP)
Специальные возможности – access.cpl
- клавиатура = "access.cpl, ,1" - звуки = "access.cpl, ,2" - экран = "access.cpl, ,3" - мышь = "access.cpl, ,4" - общие = "access.cpl, ,5"
Главная - main.cpl, используется для управления мышью, клавиатурой, принтерами, шрифтами.
- мышь = "main.cpl @0" - кнопки мыши = "main.cpl @0,0" (Windows 2000/XP) - указатели мыши = "main.cpl @0,1" (Windows XP) - параметры указателя мыши = "main.cpl @0,2" (Windows XP) - колесико мыши = "main.cpl @0,3" (Windows XP) - оборудование = "main.cpl @0,4" (Windows XP)
В Windows 2000 не смог переключить вкладки. Вместо @0 можно подставить следующие значения и получить, соответственно: - клавиатура =”main.cpl @1”
и для ХР
- скорость =”main.cpl @1,0” (Windows 98/2000) - язык =”main.cpl @1,1” (Windows 9x/2000) - оборудование =”main.cpl @1,1” (Windows XP) - оборудование =”main.cpl @1,2” (Windows 2000) - принтер =”main.cpl @2” (Windows 9x) - шрифт =”main.cpl @3” (Windows 9x)
Язык и региональные параметры – intl.cpl
- региональные стандарты/региональные параметры = “intl.cpl,,0” (Windows 9х/ХР) - общие = “intl.cpl, ,0” (Windows 2000) - числа = “intl.cpl, ,1” (Windows 9х/2000) (в Windows XP на вкладке «региональные параметры») - языки = “intl.cpl, ,1” (Windows XP) - денежная единица = “intl.cpl, ,2” (Windows 9х/2000) (в Windows XP на вкладке «региональные параме��ры») - дополнительно = “intl.cpl, ,2” (Windows XP) - время = “intl.cpl, ,3” (Windows 9х/2000) (в Windows XP на вкладке «региональные параметры») - дата = “intl.cpl, ,4” (Windows 9х/2000) (в Windows XP на вкладке «региональные параметры») - языки и раскладка = “intl.cpl, ,5” (Windows 2000)
Дата и время - timedate.cpl
- дата и время = "timedate.cpl, ,0" - часовой пояс = "timedate.cpl, ,1"
Модем - modem.cpl
- модемы = "modem.cpl" (Windows 9х – две вкладки, переключить не удалось) (вкладка «модемы» на форме «Телефон и модем» в Windows 9х/2000/XP)
Телефон и модем - telephon.cpl
- набор номера = "telephon.cpl, , 0"(Windows 2000/XP) - модемы = "telephon.cpl, ,1"(Windows 2000/XP) - дополнительно = "telephon.cpl, ,2"(Windows 2000/XP) В Windows 9х две вкладки. Переключить не удалось
Сеть/конфигурация - netcpl.cpl (Windows 9х)
Три вкладки. Переключить не удалось. Мастер настройки сети –netsetup.cpl (Windows XP)
Факс – fax.cpl (Windows 2000/XP)
- сведения о пользователе = "telephon.cpl, ,0" - титульные страницы = "telephon.cpl, ,1" - монитор состояния = "telephon.cpl, ,2" - дополнительные параметры = "telephon.cpl, ,3"
Система - sysdm.cpl
- общие = “sysdm.cpl, ,0” - устройства = “sysdm.cpl, ,1” (Windows 9х) - сетевая идентификация = “sysdm.cpl, ,1” (Windows 2000) - имя компьютера = “sysdm.cpl, ,1” (Windows XP) - профили оборудования = “sysdm.cpl, ,2 (Windows 9х) - оборудование = “sysdm.cpl, ,2 (Windows 2000/ХР) - быстродействие = “sysdm.cpl, ,3” (Windows 9х) - профили пользователей = “sysdm.cpl, ,3” (Windows 2000) - дополнительно = “sysdm.cpl, ,3” (Windows XP) - дополнительно = “sysdm.cpl, ,4” (Windows 2000) - восстановление системы = “sysdm.cpl, ,4” (Windows XP) - автоматическое обновление = “sysdm.cpl, ,5” (Windows XP) - удаленные сеансы = “sysdm.cpl, ,6” (Windows XP)
Служба автоматического обновления wuaucpl.cpl (Windows 2000)
Пароль - password.cpl (Windows 9х) Три закладки. Переключить не удалось. В Windows 2000 за пользователей отвечает модуль netplwiz.dll, который таким путем вызвать нельзя Учетные записи пользователей - nusrmgr.cpl (Windows XP)
ODBC - odbccp32.cpl
- пользовательский DSN = "odbccp32.cpl, ,0" Переключить на другие закладки не получилось.
Установка и удаление программ - appwiz.cpl
- установка/удаление программ - "appwiz.cpl, ,0" (Windows 9х) - изменение или удаление программ - "appwiz.cpl, ,0" (Windows 2000/XP) - установка компонентов Windows - "appwiz.cpl, ,1" (Windows 9х) - установка программ - "appwiz.cpl, ,1" (Windows 2000/XP) - загрузочная дискета - "appwiz.cpl, ,2" (Windows 9х) - установка компонентов Windows - "appwiz.cpl, ,2" (Windows 2000/XP) - выбор программ по умолчанию - "appwiz.cpl, ,3" (Windows 2000/XP) Для Windows 9x переключить вкладки не удалось.
Мультимедия - mmsys.cpl
- аудио = "mmsys.cpl,,0" (Windows 9х) - звук = "mmsys.cpl,,0" (Windows 2000) - звуки и аудиоустройства = "mmsys.cpl,0" (Windows XP) - громкость = "mmsys.cpl,,0" (Windows XP) - видио = "mmsys.cpl,,1" (Windows 9х) - аудио = "mmsys.cpl,,1" (Windows 2000) - звуки = "mmsys.cpl,,1" (Windows XP) - миди = "mmsys.cpl,,2" (Windows 9х) - оборудование = "mmsys.cpl,,2" (Windows 2000) - аудио = "mmsys.cpl,,2" (Windows XP)(включает в себя вкладку миди из 9х) - компакт - диск = "mmsys.cpl,,3" (Windows 9х) - речь = "mmsys.cpl,,3" (Windows XP) - оборудование = "mmsys.cpl,,4" (Windows XP)
Джойстик - joy.cpl
- игровые устройства = "joy.cpl, ,0" (Windows 9x/2000) - идентификаторы устройств = "joy.cpl, ,1" (Windows 9x/2000) В Windows XP вкладок нет
Сканеры и камеры sticpl.cpl (Windows 9х/2000)
DirectX (если он установлен) - directx.cpl Имеет 8 вкладок (DirectX 9c). Приводить их не буду. Вряд ли Вы будете настраивать DirectX из своих программ.
Брандмауэр Windows - firewall.cpl (Windows XP)
- общие = "firewall.cpl, ,0" Всего три вкладки. Переключить их не удалось.
Мастер установки оборудования - hdwwiz.cpl (Windows 2000/XP)
Электропитание - powercfg.cpl
- схема управления питанием = "powercfg.cpl, ,0" Всего четыре (Windows 98 – 2) вкладки. Переключить их не удалось.
Параметры оповещения - wscui.cpl (Windows XP)
Сетевые подключения - ncpa.cpl (Windows 2000/XP)
Свойства очереди подключений - msmq.cpl (Windows 2000)
- запоминающие устройства = "msmq.cpl, ,0" Есть три вкладки. Переключить не удалось.
Интернет - inetcpl.cpl
- общие ="inetcpl.cpl, ,0" - безопасность ="inetcpl.cpl, ,1" - конфиденциальность ="inetcpl.cpl, ,2" - содержание ="inetcpl.cpl, ,3" - подключения ="inetcpl.cpl, ,4" - программы ="inetcpl.cpl, ,5" - дополнительно ="inetcpl.cpl, ,6" Экран настройки зависит от версии IE. Здесь дан экран для IE 6.0.
Некоторые программы тоже помещают свои экраны настройки в системный раздел Windows (например, Java - jpicpl32.cpl) Другие программы хранят свои экраны настройки в своих папках. Их можно так же запустить через Shell
Call Shell("rundll32.exe shell32.dll,Control_RunDLL имя_файла.cpl,0" )
Но в этом случае имя файла должно указываться с полным путем. Поскольку названия папок могут содержать пробелы, то можно привести его к DOS виду. Например, отрыть экран настройки конфигураций почты Outloоk можно так
Call Shell("rundll32.exe shell32.dll,Control_RunDLL _ G:\PROGRA~1\COMMON~1\System\MSMAPI\1049\MLCFG32.CPL,,")
Или заключить путь в две пары двойных кавычек
Call Shell("rundll32.exe shell32.dll,Control_RunDLL _ ""g:\Program Files\Common Files\System\MSMAPI\1049\MLCFG32.CPL"" ,,")
Из-за того, что в разных версиях Windows состав экранов управления различен, причем иногда различны и закладки на этих экранах, к использованию экранов настройки Windows надо подходить с осторожностью. Желательно сначала определить используемую версию Windows.
Маленький совет. Если Вы собираетесь часто использовать экраны настройки, или их вызов у Вас осуществляется в нескольких местах, целесообразно сделать специальную подпрограмму для вызова экранов настройки
Public Sub ShellSysComp(strLibName As String, intIndex As Integer) Call Shell("rundll32.exe shell32.dll,Control_RunDLL " + strLibName + ",," + LTrim(Str(intInddex))) End Sub
Эта подпрограмма всего лишь соединяет имя библиотеки с индексом, переведённым в строку, и запускает всё это дело. Используемые материалы: сайт www.sdteam.com, Сергей Миллер, «Вызов системных компонентов из VB»
|