|
|
|
Windows Scripting (выпуск 5)
|
|
|
Здравствуйте!
В этом выпуске:
Архив рассылки Вы можете найти на сайте
scripting.narod.ru.
|
|
|
|
17.11.2000
В журнале MSDN Online Voices
опубликована очередная статья Andrew Clinick -
Windows Script Host 5.6,
посвященная, как нетрудно догадаться, первой бета-версии Windows Script 5.6.
Очередная статья из серии Scripting Clinic ожидается 11 декабря.
|
|
|
14.11.2000
Вышел в свет декабрьский номер журнала MSDN Magazine.
Среди его статей:
|
|
|
13.11.2000
Выпущена первая бета-версия Windows Script 5.6, значительно расширенная
по сравнению с предыдущей версией. Скачать ее можно здесь:
http://www.microsoft.com/msdownload/vbscript/scripting56.asp.
|
|
|
|
В три действия:
- Создаем стандартный WSH-объект WScript.Shell.
- С помощью его метода RegRead извлекаем из Registry путь к Outlook.
- Используя метод Run того же объекта, запускаем Outlook.
Листинг
Option Explicit
Dim Shell
Set Shell = WScript.CreateObject("WScript.Shell")
Dim OutlookPath
OutlookPath = _
Shell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows" & _
"\CurrentVersion\App Paths\OUTLOOK.EXE\")
If Len(OutlookPath) = 0 Then
MsgBox "Cannot fine Outlook.", vbCritical
WScript.Quit
End If
On Error Resume Next
Shell.Run OutlookPath, 1
If Err.Number <> 0 Then MsgBox "Cannot run Outlook, error " & _
Hex(Err.Number) & " (hex).", vbCritical
On Error Goto 0
Set Shell = Nothing
|
|
|
Узнать букву локального CDROM-диска можно, используя стандартный объект
FileSystemObject.
Комментарии к коду:
- Код, определяющий букву диска, вынесен в функцию GetCdromDriveLetter.
- Если на компьютере установлены несколько CDROM-дисков,
то определяется первый из них.
- Удаленные (сетевые) CDROM-диски не определяются.
Листинг
Option Explicit
Dim DriveLetter
DriveLetter = GetCdromDriveLetter
If Len(DriveLetter) > 0 Then
MsgBox "CDROM-диск находится на букве '" & DriveLetter & "'."
Else
MsgBox "CDROM-диск не обнаружен."
End If
Function GetCdromDriveLetter()
GetCdromDriveLetter = ""
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim Drive
For Each Drive In FSO.Drives
If Drive.DriveType = 4 Then
GetCdromDriveLetter = Drive.DriveLetter
Exit For
End If
Next
Set FSO = Nothing
End Function
|
|
|
|
В Microsoft Outlook встроена очень полезная утилита - Rules Wizard (Мастера правил).
На основании заданных пользователем правил (весьма гибких!)
она позволяет автоматически обрабатывать входящую почту и осуществлять другие
полезные операции.
Правила хранятся в rwz-файлах специального бинарного формата. К сожалению, для архивации
правил простого копирования этих файлов не всегда достаточно - архивацию рекомендуется
осуществлять через операцию импорта, которая доступна только через пользовательский
интерфейс.
Для автоматизации этой операции и был написан данный скрипт - он осуществляет архивацию
правил автоматически, без вмешательства пользователя.
Вот что он делает:
- Прежде чем осуществлять архивацию, скрипт удаляет уже существующий архивный файл,
иначе при импорте Outlook задаст вопрос о том, перезаписывать этот файл или нет.
- Для осуществления архивации запускается Microsoft Outlook (или его вторая копия,
если он уже был запущен). Подробности смотрите
здесь.
- Запустив Outlook, скрипт ждет, пока тот активизируется (максимально 10 секунд).
- Дождавшись, посылает ему последовательность нажатий клавиш, которые должны
привести к импорту правил в файл. Иными словами, мы эмулируем работу пользователя -
окрытие меню, выбор команды меню, нажатие кнопки на диалоге и т.д.
Осуществляется все это с помощью метода SendKeys стандартного WSH-объекта
WScript.Shell
- Затем Outlook закрывается, опять-таки с помощью посылки кодов клавиш.
- Вот, собственно, и все. Очень просто.
Что нужно учесть:
- В скрипте правила архивируются в файл "C:\OutlookRulesWizard.rwz".
Измените этот путь (константа BackupFileName), исходя из Ваших требований.
- Посылаемые последовательности клавиш написаны для английской версии
Microsoft Outlook 2000. Если у Вас неанглийская (например, русская) версия,
или Outlook другой версии, то Вам придется эти последовательности изменить
или по меньшей мере проверить (это параметры, передаваемые методу SendKeys).
- Предполагается, что Outlook запускается автоматически, без диалога с предложением
выбрать MAPI-профайл.
Листинг
Option Explicit
' В этой константе укажите имя backup-файла
Const BackupFileName = "C:\OutlookRulesWizard.rwz"
' Имя программы
Const AppName = "Outlook Rules Wizard Backup"
' Удаляем backup-файл, если он уже существует
Dim FSO
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
If FSO.FileExists(BackupFileName) Then FSO.DeleteFile(BackupFileName)
Set FSO = Nothing
' Создаем объект WScript.Shell
Dim Shell
Set Shell = WScript.CreateObject("WScript.Shell")
' Запускаем Outlook
Dim OutlookPath
OutlookPath = _
Shell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows" & _
"\CurrentVersion\App Paths\OUTLOOK.EXE\")
If Len(OutlookPath) = 0 Then ErrorBox "Cannot find Outlook."
On Error Resume Next
Shell.Run OutlookPath, 1
If Err.Number <> 0 Then ErrorBox "Cannot run Outlook, error " & _
Hex(Err.Number) & " (hex)."
On Error GoTo 0
' Будем ждать запуска Outlook максимально WaitCount секунд
Dim WaitCount
WaitCount = 10
' Ждем, пока запустится Outlook
Do While (Not ActivateOutlook) And (WaitCount > 0)
Shell.Popup "Waiting for Outlook...", 1, AppName, vbInformation
WaitCount = WaitCount - 1
Loop
If Not ActivateOutlook Then ErrorBox "Cannot run Outlook."
' Делаем backup
WScript.Sleep 500
Shell.SendKeys "%TL%O%E" & BackupFileName & "{ENTER}{ESC}{ESC}"
' Закрываем Outlook
WScript.Sleep 500
Shell.SendKeys "%FX"
' Все
Set Shell = Nothing
' Эта функция активизирует Outlook
Function ActivateOutlook()
ActivateOutlook = Shell.AppActivate(" - Microsoft Outlook")
End Function
' Эта функция выдает сообщение об ошибке и завершает работу скрипта
Sub ErrorBox(Msg)
MsgBox Msg, vbCritical, AppName
WScript.Quit
End Sub
Смотри также
Как запустить Microsoft Outlook?
To back up Outlook Rules Wizard rules (на slipstick.com)
Q196492 - OL2000: (IMO) How to Back Up, Restore, or Move Outlook Data
|
|
|
Архив рассылки Вы можете найти на сайте
scripting.narod.ru.
|
|
|
|