Главная страница

Новости

Вопрос-ответ

Скрипты

ActiveX

Статьи

Книжная полка

Knowledge Base

Конференции

Ссылки

 

Гостевая книга

Напишите мне письмо

 

Подписка на рассылку

Рассылка 'Windows Scripting'  Архив

 

 

Лучше смотреть с Microsoft Internet Explorer 4.0 и выше

 

Создано с помощью UltraEdit

 

 
 
 

Windows Scripting (выпуск 7)

 
 
 

Здравствуйте!

Приношу свои извинения за то, что рассылка долго не выходила - у ведущего были некоторые проблемы, которые наконец начинают разрешаться. Надеюсь, что отныне рассылка будет выходить более регулярно.

Из приятного: Ваш покорный слуга недавно пересдал на Brainbench экзамен VBScript 5.5 с результатом 4.6 балла и оказался на 15 месте в мире :) - из 3370 уже сдавших этот экзамен.

В этом выпуске:

Архив рассылки Вы найдете на сайте scripting.narod.ru.

 
Новости
 
Выпущена вторая бета-версия Windows Script 5.6
 
  • 11.04.2001
    Выпущена вторая бета-версия Windows Script 5.6. Скачать ее можно здесь: http://www.microsoft.com/msdownload/vbscript/scripting56.asp.
  •  
    Вышел в свет апрельский номер журнала MSDN Magazine
     
  • 20.03.2001
    Вышел в свет апрельский номер журнала MSDN Magazine. Среди его статей:
  •  
    В журнале MSDN Online Voices опубликована очередная статья Andrew Clinick
     
  • 13.03.2000
    В журнале MSDN Online Voices опубликована очередная статья Andrew Clinick - Scripting the Experience with Microsoft Office Developer. На этот раз она посвящена использованию скриптов в разработке приложений под новую версию Microsoft Office - Microsoft Office XP. Очередная статья из серии Scripting Clinic ожидается 9 апреля.
  •  
    Новая книга на colibri.ru - "Perl. Архив программ"
     
  • 26.01.2001
    Perl. Архив программ - Браун М., "Бином" - 2001, 720 стр.
    В книге представлена и подробно описана библиотека программ, предназначеных для использования в различных областях программирования. Тематика программ подобрана таким образом, чтобы продемонстрировать преимущества языка PERL при решении тех задач, для которых и создавался язык. [Подробнее] [Заказать]
  •  
    В журнале MSDN Online Voices опубликована очередная статья Andrew Clinick
     
  • 16.01.2001
    В журнале MSDN Online Voices опубликована очередная статья Andrew Clinick - Introducing Visual Studio for Applications, посвященная этому новому продукту Microsoft. VSA - гибрид технологий Visual Basic for Applications (VBA) и Windows Script - предназначается для настройки (customization) программ в Windows .NET. Очередная статья из серии Scripting Clinic ожидается 12 февраля.
  •  
    Вышел в свет февральский номер журнала MSDN Magazine
     
  • 11.01.2000
    Вышел в свет февральский номер журнала MSDN Magazine. Среди его статей: Как нетрудно заметить, Microsoft активно переходит на .NET. Думаю, и нам пора...

    Тем, кто заинтересовался, предлагаю для начала посетить .NET Developer Center на сайте Microsoft.

    Кстати, к февральскому номеру прилагается CDROM с Microsoft .NET Beta 1. Если, конечно, вы покупаете печатную версию.

  •  
    Разные советы
     
    Журнал MSND Magazine в виде CHM-файлов
     
    Номера журнала MSND Magazine за 2001 год можно скачать в виде CHM-файлов и потом не торопясь просматривать в offline. Очень удобно и то, что система HTML Help предоставляет полноценный поиск.

    Вот текущие ссылки:

    Как дальше - догадайтесь сами :)

     
    Вопросы и ответы
     
    Как перечислить все сервера Microsoft Exchange Server 2000?
     
    Все сервера Microsoft Exchange Server 2000, находящиеся в домене, можно перечислить через Active Directory.

    В данном примере используется доступ к Active Directory через ADO.

    Листинг: enumerate.vbs

    Option Explicit ' узнаем имя локального компьютера Dim ServerName Dim Network Set Network = WScript.CreateObject("WScript.Network") ServerName = Network.ComputerName Set Network = Nothing ' выбираем RootDSE Dim RootDSE Set RootDSE = GetObject("LDAP://" & ServerName & "/RootDSE") ' можно было бы и так: ' Set RootDSE = GetObject("LDAP://RootDSE") ' но так иногда возникают проблемы на Windows NT ' выбираем configurationNamingContext Dim CNC CNC = RootDSE.Get("configurationNamingContext") ' открываем коннекцию ADO через ADSI провайдер OLE DB Dim Connection Set Connection = CreateObject("ADODB.Connection") Connection.Provider = "ADsDSOObject" Connection.Open "ADs Provider" ' кстати, первым параметром метода Open может быть любая ' (в том числе пустая) строка ' традиционно указывается "ADs Provider" ' самое интересное - строка запроса Dim Query Query = "<LDAP://" & CNC & _ ">;(objectCategory=msExchExchangeServer);" & _ "name,serialNumber;subtree" ' исполняем команду Dim Command Set Command = CreateObject("ADODB.Command") Command.ActiveConnection = Connection Command.CommandText = Query Dim Recordset Set Recordset = Command.Execute ' пробегаемся по результатам Dim S Do While Not Recordset.EOF ' версия возвращается почему-то как Variant, ' т.е. следующая строка не пройдет: ' S = S & Recordset.Fields("serialNumber") Dim Version Version = Recordset.Fields("serialNumber").Value ' записываем результат S = S & Recordset.Fields("name") & " - " & Version(0) & vbNewLine Recordset.MoveNext Loop ' закрываем все, что открыли Recordset.Close Connection.Close Set Recordset = Nothing Set Command = Nothing Set Connection = Nothing ' сообщаем результат If Len(S) = 0 Then S = "No Microsoft Exchange servers found!" Else S = "Servers found:"& vbNewLine & S End If MsgBox S, vbOkOnly + vbInformation

    Смотри также

  • Как определить версию Microsoft Exchange Server 2000?
  •  
    Скрипты
     
    Чтение тегов MP3-файлов (ActiveX, написанный на VBScript)
     
    Вашему вниманию предлагается ActiveX, написанный на VBScript и предназначенный для чтения тегов MP3-файлов (название песни, исполнитель, из какого альбома, т.д.).

    Разработан он с помощью малоизвестной и малоиспользуемой технологии Microsoft под названием Windows Script Components (бывшие scriptlets).

    Windows Script Components - это технология, позволяющая писать компоненты COM (ActiveX) на скриптовых языках. Подробнее о технологии Windows Script Components можно прочитать на сайте Microsoft и в других источниках (см. список ссылок в конце статьи). Особенно рекомендуется документация по Windows Script Components, ссылка на которую дана чуть ниже.

    Ссылки

    Последняя версия Windows Script (со встроенными Windows Script Components)
    Документация по Windows Script Components
    Windows Script Component Wizard, облегчающий создание WSC-файлов

    Инсталляция

    1. Скачайте и проинсталлируйте последнюю версию Windows Script (см.ссылку вверху).
      Если Вы работаете под Windows 2000, это делать не обязательно.
    2. Скачайте файл mp3tags.wsc. Это и есть ActiveX, написанный на VBScript.
    3. Зарегистрируйте его (так же, как и обычный ActiveX):
      regsvr32 mp3tags.wsc
    4. Все, теперь скрипт готов к употреблению.
    Чтобы использовать ActiveX, необходимо его создать стандартным способом: Dim MP3Tags Set MP3Tags = CreateObject("Scripting.Mp3TagsReader") А теперь - несколько примеров.

    Пример 1: sample1.vbs

    Этот скрипт показывает теги MP3-файла, имя которого передано в командной строке. Option Explicit Const AppName = "MP3 Tags Reader sample 1" ' проверяем число аргументов If WScript.Arguments.Count <> 1 Then ShowHelp WScript.Quit End If ' получаем имя MP3-файла Dim Mp3Name Mp3Name = WScript.Arguments(0) ' создаем объект Mp3TagsReader Dim Reader Set Reader = CreateObject("Scripting.Mp3TagsReader") ' читаем теги файла Dim Result Result = Reader.Read(Mp3Name) ' если ошибка - показываем ее код If Result <> 0 Then MsgBox "Error " & Result & " reading MP3 tags from file" & _ vbNewLine & Mp3Name, vbExclamation, AppName WScript.Quit End If ' если все нормально - показываем все теги MsgBox "File:" & vbTab & Reader.FileName & vbNewLine & _ "Title:" & vbTab & Reader.Title & vbNewLine & _ "Artist:" & vbTab & Reader.Artist & vbNewLine & _ "Album:" & vbTab & Reader.Album & vbNewLine & _ "Year:" & vbTab & Reader.Year & vbNewLine & _ "Comment:" & vbTab & Reader.Comment & vbNewLine & _ "Genre:" & vbTab & Reader.Genre & _ " (" & Reader.GenreIndex & ")" & vbNewLine & _ "Track:" & vbTab & Reader.Track & vbNewLine, _ vbInformation, AppName ' уничтожаем созданный ранее объект Set Reader = Nothing ' показывает справку Sub ShowHelp MsgBox "MP3 file name is not specified." & _ vbNewLine & vbNewLine & "Usage:" & vbNewLine & _ " " & WScript.ScriptName & " mp3_file_name", _ vbCritical, AppName End Sub

    Пример 2: sample2.vbs

    Этот скрипт находит все MP3-файлы, в тегах которых есть заданная строка. Поиск начинается с каталога, где находится скрипт, и включает все подкаталоги. Option Explicit Const AppName = "MP3 Tags Reader sample 2" ' запрашиваем текст для поиска Dim SearchText SearchText = InputBox("Enter text to search in MP3 tags:", AppName) If Len(SearchText) = 0 Then WScript.Quit ' определяем стартовый каталог Dim Root Root = WScript.ScriptFullName Dim I I = InStrRev(Root, "\") If I = 0 Then I = InStrRev(Root, "/") Root = Left(Root, I - 1) ' создаем объект FileSystemObject - ' он будет использоваться в функции рекурсивного обхода каталогов Dim FSO Set FSO = CreateObject("Scripting.FileSystemObject") ' создаем объект Mp3TagsReader для тех же целей Dim Reader Set Reader = WScript.CreateObject("Scripting.Mp3TagsReader") ' строка, в которой будут накапливаться имена найденных файлов Dim S ' начинаем рекурсивный обход каталогов ScanFolder Root ' уничтожаем созданные ранее объекты Set Reader = Nothing Set FSO = Nothing If Len(S) = 0 Then ' если ничего не найдено S = "Search string not found!" Else ' иначе добавляем вводную строчку S = "Search string found in:" & vbNewLine & S End If ' выводим диалог с результатом MsgBox S, vbOkOnly + vbInformation, AppName ' это функция рекурсивного обхода каталогов Sub ScanFolder(FolderName) ' порлучаем текущий каталог Dim Folder Set Folder = FSO.GetFolder(FolderName) ' рекурсивно проходим все файлы Dim File For Each File In Folder.Files ' пытаемся прочитать теги MP3 Dim Result Result = Reader.Read(File.Path) If Result = 0 Then ' этот файл содержит теги MP3 ' ищем строку поиска в тегах If InStr(Reader.Title, SearchText) > 0 Or _ InStr(Reader.Artist, SearchText) > 0 Or _ InStr(Reader.Album, SearchText) > 0 Or _ InStr(Reader.Comment, SearchText) > 0 Then ' если нашли - добавляем к строке результата S = S & File.Path & vbNewLine End If End If Next ' рекурсивно проходим все подкаталоги Dim SubFolder For Each SubFolder In Folder.SubFolders ScanFolder SubFolder.Path Next End Sub

    Листинг: mp3tags.wsc

    Исходный текст ActiveX. <?XML version="1.0" standalone="yes" encoding="UTF-16"?> <?component error="true" debug="true"?> <component> <registration description="MP3 Tags Reader" progid="Scripting.Mp3TagsReader" version="1" classid="{C2DE6203-17AE-11d5-8CF4-8EBC99C67466}"> <script language="VBScript"> <![CDATA[ Option Explicit Function Register() Dim ScriptFileName Dim Shell Set Shell = CreateObject("WScript.Shell") ScriptFileName = _ Shell.RegRead("HKEY_CLASSES_ROOT\CLSID\" & _ "{C2DE6203-17AE-11D5-8CF4-8EBC99C67466}\ScriptletURL\") Set Shell = Nothing Const Prefix = "file://" If 0 = StrComp(Left(ScriptFileName, Len(Prefix)), Prefix, 1) Then ScriptFileName = Mid(ScriptFileName, Len(Prefix) + 1) End If Dim TypelibFileName TypelibFileName = ScriptFileName Dim I I = InStrRev(TypelibFileName, ".") If I > 0 Then TypelibFileName = Left(TypelibFileName, I - 1) End If TypelibFileName = TypelibFileName & ".tlb" Dim GTL Set GTL = CreateObject("Scriptlet.TypeLib") GTL.AddURL ScriptFileName GTL.Path = TypelibFileName GTL.Doc = "MP3 Tags Reader" GTL.GUID = "{C2DE6203-17AE-11d5-8CF4-8EBC99C67467}" GTL.Name = "Mp3TagsReader" GTL.MajorVersion = 1 GTL.MinorVersion = 0 GTL.Write GTL.Reset Set GTL = Nothing End Function Function Unregister() End Function ]]> </script> </registration> <public> <property name="Title"><get/></property> <property name="Artist"><get/></property> <property name="Album"><get/></property> <property name="Year"><get/></property> <property name="Comment"><get/></property> <property name="GenreIndex"><get/></property> <property name="Genre"><get/></property> <property name="Track"><get/></property> <property name="FileName"><get/></property> <method name="Read"> <parameter name="FileName"/> </method> </public> <script language="VBScript"> <![CDATA[ Option Explicit Const AppName = "MP3 Tags Reader" Dim Title, Artist, Album, Year, Comment, GenreIndex, Genre, Track Dim FileName Function get_Title() get_Title = Title End Function Function get_Artist() get_Artist = Artist End Function Function get_Album() get_Album = Album End Function Function get_Year() get_Year = Year End Function Function get_Comment() get_Comment = Comment End Function Function get_GenreIndex() get_GenreIndex = GenreIndex End Function Function get_Genre() get_Genre = Genre End Function Function get_Track() get_Track = Track End Function Function get_FileName() get_FileName = FileName End Function Function Read(FileNameToRead) ' function return codes Const mp3Success = 0 Const mp3FileNotFound = 1 Const mp3FileTooSmall = 2 Const mp3CannotOpenFile = 3 Const mp3CannotReadFile = 4 Const mp3BadFileFormat = 5 Const mp3CreateObjectFailed = 6 ' Clear info Title = "" Artist = "" Album = "" Year = "" Comment = "" GenreIndex = 0 Genre = "" Track = 0 FileName = "" ' Start handling file errors On Error Resume Next ' Create FileSystemObject Dim FSO Set FSO = CreateObject("Scripting.FileSystemObject") If Err.Number <> 0 Then Read = mp3CreateObjectFailed Exit Function End If ' Test for file existance If Not FSO.FileExists(FileNameToRead) Then Read = mp3FileNotFound Exit Function End If ' Get file length and test it ' It must be at least 128 bytes long (the size ' of the info structure) Dim File Set File = FSO.GetFile(FileNameToRead) Dim FileLength FileLength = File.Size If FileLength <= 128 Then Read = mp3FileTooSmall Exit Function End If ' Open MP3 file for reading and check for errors Dim Stream Set Stream = File.OpenAsTextStream(1) ' 1 = ForReading If Err.Number <> 0 Then Read = mp3CannotOpenFile Exit Function End If ' Reserve space for info structure Dim Data Data = String(256, 0) ' Read info structure and check for errors Stream.Skip(FileLength - 128) Data = Stream.Read(128) If Err.Number <> 0 Then Read = mp3CannotReadFile Exit Function End If ' Close stream Stream.Close ' Release file Set File = Nothing ' Release FileSystemObject Set FSO = Nothing ' Stop handling file errors On Error GoTo 0 ' Test for proper info structure - it must start with ' "TAG" string if it is correct If Left(Data, 3) <> "TAG" Then Read = mp3BadFileFormat Exit Function End If ' Get string info Title = Trim(Mid(Data, 4, 30)) Artist = Trim(Mid(Data, 34, 30)) Album = Trim(Mid(Data, 64, 30)) Year = Trim(Mid(Data, 94, 4)) Comment = Trim(Mid(Data, 98, 30)) ' Get track number Track = Asc(Mid(Data, 127, 1)) If Track = 32 Then Track = 0 ' Get genre index GenreIndex = Asc(Mid(Data, 128, 1)) ' Make genre names array Dim GenreNamesMatrix GenreNamesMatrix = "Blues|Classic Rock|Country|" & _ "Dance|Disco|Funk|Grunge|" & _ "Hip-Hop|Jazz|Metal|New Age|Oldies|Other|" & _ "Pop|R&B|Rap|Reggae|Rock|Techno|" & _ "Industrial|Alternative|Ska|Death Metal|" & _ "Pranks|Soundtrack|Euro-Techno|" & _ "Ambient|Trip Hop|Vocal|Jazz+Funk|Fusion|" & _ "Trance|Classical|Instrumental|Acid|" & _ "House|Game|Sound Clip|Gospel|Noise|Alt. Rock|" & _ "Bass|Soul|Punk|Space|Meditative|" & _ "Instrumental Pop|Instrumental Rock|Ethnic|" & _ "Gothic|Darkwave|Techno-Industrial|Electronic|" & _ "Pop-Folk|Eurodance|Dream|Southern Rock|Comedy|" & _ "Cult|Gangsta Rap|Top 40|Christian Rap|" & _ "Pop/Punk|Jungle|Native American|Cabaret|New Wave|" & _ "Phychedelic|Rave|Showtunes|Trailer|" & _ "Lo-Fi|Tribal|Acid Punk|Acid Jazz|Polka|Retro|" & _ "Musical|Rock & Roll|Hard Rock|Folk|" & _ "Folk/Rock|National Folk|Swing|Fast-Fusion|Bebob|" & _ "Latin|Revival|Celtic|Blue Grass|" & _ "Avantegarde|Gothic Rock|Progressive Rock|" & _ "Psychedelic Rock|Symphonic Rock|Slow Rock|" & _ "Big Band|Chorus|Easy Listening|Acoustic|Humour|" & _ "Speech|Chanson|Opera|Chamber Music|" & _ "Sonata|Symphony|Booty Bass|Primus|Porn Groove|" & _ "Satire|Slow Jam|Club|Tango|Samba|Folklore|" & _ "Ballad|Power Ballad|Rhythmic Soul|Freestyle|" & _ "Duet|Punk Rock|Drum Solo|A Capella|Euro-House|" & _ "Dance Hall|Goa|Drum & Bass|Club-House|Hardcore|" & _ "Terror|indie|Brit Pop|Negerpunk|Polsk Punk|" & _ "Beat|Christian Gangsta Rap|Heavy Metal|" & _ "Black Metal|Crossover|Comteporary Christian|" & _ "Christian Rock|Merengue|Salsa|Trash Metal|" & _ "Anime|JPop|Synth Pop" Dim GenreNamesArray GenreNamesArray = Split(GenreNamesMatrix, "|") ' Get genre name If GenreIndex <= UBound(GenreNamesArray) Then Genre = GenreNamesArray(GenreIndex) Else Genre = "Unknown" End If ' Save and fix file name FileName = FileNameToRead FileName = Replace(FileName, "/", "\") ' Function finished successfully Read = mp3Success End Function ]]> </script> </component>

    Смотри также

  • Windows Script Components на сайте Microsoft
  • Колонка Visual Programmer в журнале Microsoft Systems Journal (февраль 2000)
  • ASP and Windows Script Components (Microsoft Internet Developer, декабрь 1999)
  • Windows Script Components - They Get Around, by Andrew Clinick
  • Создание COM-компонентов с помощью скриптовых языков в журнале "Технология Клиент-Сервер" (1 квартал 2000)
  • Статьи из Microsoft Knowledge Base, посвященные Windows Script Components
  •  
    Библиотека повторно используемых классов
     
    Класс CLog - запись в журнал
     
    Класс CLog преназначен для записи текста в файл журнала (log). Это может быть как отладочная информация, так и информация о ходе выполнения скрипта.

    Основные особенности класса CLog:

    • Имя файла журнала генерируется автоматически: он создается в том же каталоге, где находится файл исполняемого скрипта, и имеет то же имя, но с расширением .log.
    • Имя файла журнала можно узнать или поменять.
    • Для удобства работы можно узнать каталог, в котором находится файл исполняемого скрипта, а также имя этого файла (без расширения).
    • Журнал можно вести как в формате ANSI (по умолчанию), так и формате Unicode.
    • При записи строчки в ее начало автоматически помещается текущее время (эта опция может быть отключена).
    • Специальная функция позволяет очистить (точнее, удалить) файл журнала.
    • Можно также считать весь журнал в строковую переменную.

    Методы и свойства класса

    Метод Описание
    Write(Text) Записывает строку Text в файл журнала.
    Возвращает True в случае успеха, иначе - False.
    ReadAll Считывает файл журнала целиком.
    В случае ошибки возвращается пустая строка.
    Clear Удаляет файл журнала.
    Возвращает True в случае успеха, иначе - False.

    Свойство Описание
    LogFullName Полное имя файла журнала.
    Read/Write.
    ScriptPath Каталог, в котором находится файл исполняемого скрипта.
    Read only.
    ScriptName Имя файла исполняемого скрипта (без расширения).
    Read only.
    Format Формат записи журнала: ANSI (0), Unicode (-1), по умолчанию (-2).
    По умолчанию - ANSI.
    Read/Write.
    IncludeTime Определяет, помещать ли в начало строки текущее время.
    По умолчанию - True.
    Read/Write.
    FSO Возвращает объект типа FileSystemObject, используемый классом CLog.
    Read only.

    Пример 1

    Самый простой пример: создаем объект Log типа CLog; удаляем файл журнала, если он был (метод Clear); пишем в журнал строку (метод Write). <job id="CLog1"> <script language="VBScript" src="clog.vbs"/> <script language="VBScript"> Option Explicit Dim Log Set Log = New CLog Log.Clear Log.Write "Первая запись в журнал" Set Log = Nothing </script> </job>

    Пример 2

    В этом примере мы поменяем путь к файлу журнала - он будет сохраняться в TEMP-каталоге.

    Обратите внимание на отсутствие метода Clear - в этом случае файл журнала не будет удаляться при каждом запуске скрипта.

    И еще - путь к TEMP-каталогу получается через объект FileSystemObject (свойство FSO), который используется классом CLog.

    <job id="CLog2"> <script language="VBScript" src="clog.vbs"/> <script language="VBScript"> Option Explicit Dim Log Set Log = New CLog Log.LogFullName = _ Log.FSO.GetSpecialFolder(2).Path & "\" & _ Log.ScriptName & ".log" Log.Write "Запись в журнал" Set Log = Nothing </script> </job>

    Пример 3

    Еще один простой пример - мы отменим запись текущего времени в начало строки и будем использовать формат Unicode. <job id="CLog3"> <script language="VBScript" src="clog.vbs"/> <script language="VBScript"> Option Explicit Dim Log Set Log = New CLog Log.IncludeTime = False Log.Format = -1 Log.Write "Запись в журнал" Set Log = Nothing </script> </job>

    Пример 4

    И последний пример - после записи двух строк в журнал мы прочитаем его и выведем в диалоговом окне. <job id="CLog4"> <script language="VBScript" src="clog.vbs"/> <script language="VBScript"> Option Explicit Dim Log Set Log = New CLog Log.Write "Запись в журнал" Log.Write "Еще одна запись в журнал" MsgBox Log.ReadAll Set Log = Nothing </script> </job>

    А вот наконец собственно листинг класса CLog:

    Листинг: clog.vbs

    Option Explicit Class CLog Private m_FSO Private m_LogFullName Private m_ScriptName Private m_ScriptPath Private m_Format Private m_IncludeTime Private Sub Class_Initialize Set m_FSO = CreateObject("Scripting.FileSystemObject") m_ScriptName = WScript.ScriptName Dim I I = InStrRev(m_ScriptName, ".") If I > 0 Then m_ScriptName = Left(m_ScriptName, I - 1) m_ScriptPath = WScript.ScriptFullName I = InStrRev(m_ScriptPath, "\") If I > 0 Then m_ScriptPath = Left(m_ScriptPath, I) m_LogFullName = m_ScriptPath & m_ScriptName & ".log" m_Format = 0 ' ANSI m_IncludeTime = True End Sub Private Sub Class_Terminate Set m_FSO = Nothing End Sub Property Get FSO Set FSO = m_FSO End Property Property Let LogFullName(NewName) m_LogFullName = NewName End Property Property Get LogFullName LogFullName = m_LogFullName End Property Property Get ScriptPath ScriptPath = m_ScriptPath End Property Property Get ScriptName ScriptName = m_ScriptName End Property Property Let Format(NewFormat) m_Format = NewFormat End Property Property Get Format Format = m_Format End Property Property Let IncludeTime(NewValue) m_IncludeTime = NewValue End Property Property Get IncludeTime IncludeTime = m_IncludeTime End Property Function Write(Text) On Error Resume Next ' for example if access is denied Dim File Set File = _ m_FSO.OpenTextFile(m_LogFullName, 8, True, m_Format) Write = Err = 0 If Write Then If m_IncludeTime Then Text = Now & " " & Text File.Write Text & vbNewLine File.Close End If Set File = Nothing On Error GoTo 0 End Function Function ReadAll On Error Resume Next ' if file does not exist Dim File Set File = _ m_FSO.OpenTextFile(m_LogFullName, 1, False, m_Format) If Err = 0 Then ReadAll = File.ReadAll File.Close Else ReadAll = "" End If Set File = Nothing On Error GoTo 0 End Function Function Clear On Error Resume Next ' if file does not exist m_FSO.DeleteFile m_LogFullName, True Clear = Err = 0 On Error GoTo 0 End Function End Class
     
    Новые статьи из Microsoft Knowledge Base
     
     
     
     
    Архив рассылки Вы найдете на сайте scripting.narod.ru.