LEADERSOFT.ru Разработка на заказ программ и сайтов
ЕСЛИ БАЗА ВАМ НУЖНА В ЛИДЕРСОФТ ЗАЙДИ СПЕРВА!
Список всех статей ... Подписка на новости (рассылка через subscribe.ru)






























Выпуск 87. Материалы для начинающих (34 урок)

Подписка: "Access 2000 - программирование и готовые решения"
Дата: 19 01.2008
Автор: Дмитрий Сонных (aka Joss)
Сайт: http://www.accessoft.ru под редакцией с http://www.leadersoft.ru/ .
Новые материалы
: Системные компоненты
На сайте AccesSoft публикуются статьи, посвященные вопросам, связанным с разработкой приложений Access. Вопросы по работе с Access Вы можете задать на форуме. Вы так же можете ознакомиться с готовыми программами, получить исходный код, купить программу, связаться с автором для решения вопроса о доработке программы под Ваши требования.


    Информация для отдела маркетинга. На сайте http://www.mostorg.com работает гипермаркет.  Вы можете разместить свои базы данных, а также различные товары и услуги. Новый дизайн и интерфейс позволяет вам загружать информацию из листов типа Microsoft Excel, а также создавать презентабельный внешний вид товаров и услуг. Это должно улучшить продажи ваших продуктов через интернет.
    Данная статья ориентирована на начинающих разработчиков Access, желающих более углубленно изучить возможности программирования в Access и сделать свои приложения более профессиональными.
Вызов системных компонентов из VB/VBA.

      Иногда бывает необходимо просмотреть или изменить системные настройки 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»