![]() |
|
||||||||||
|
|||||
|
listener
|
Недавно обнаружил полезную фишку в методе
mdm.System.VBScript.execute() В документации сказано, что он (метод) ничего не возвращает. Однако это не так. var vbCode = 'Function MyFunc(a,b,c,d,e)\r'; vbCode += 'MyFunc=\"Возвращаемое значение\"\r'; vbCode += 'End Function\r'; var Return = mdm.System.VBScript.execute(vbCode, "MyFunc", "", "", "", "", ""); mdm.Dialogs.prompt(Return); Польза в том, что можно использовать vb-скрипты с обратной связью, получая от них данные. Например, задействовать встроенные в vbs функции обработки строк при помощи регулярных выражений, шелльные команды, системные и сетевые функции и т.п. Скачать доки по скриптам http://download.microsoft.com/downlo...scrdoc56en.exe Пример 1 Получить имя компа, юзера, домена var vbCode = 'Function MyFunc(a,b,c,d,e)\r'; vbCode += 'Set WshNetwork = CreateObject(\"WScript.Network\")\r'; vbCode += 'MyFunc = WshNetwork.ComputerName & vbNewLine & WshNetwork.UserName & vbNewLine & WshNetwork.UserDomain\r'; vbCode += 'End Function\r'; var Return = mdm.System.VBScript.execute(vbCode, "MyFunc", "", "", "", "", ""); mdm.Dialogs.prompt(Return); Замена символов в строке. (см. мануал по vb-функции Replace) var vbCode = 'Function MyFunc(a,b,c,d,e)\r'; vbCode += 'MyFunc = Replace(a, b, c)\r'; vbCode += 'End Function\r'; var Return = mdm.System.VBScript.execute(vbCode, "MyFunc", "XXpXXPXXp", "p", "_", "", ""); mdm.Dialogs.prompt(Return); Импорт текста из документа Word. В примере файл "Test line.doc" содержит несколько строк текста. var vbCode = 'Function MyFunc(a,b,c,d,e)\r'; vbCode += 'Set objDoc = GetObject(a)\r'; vbCode += 'objDoc.Select\r'; vbCode += 'MyFunc = objDoc.Application.Selection\r'; vbCode += 'objDoc.Application.Quit\r'; vbCode += 'End Function\r'; var Return = mdm.System.VBScript.execute(vbCode, "MyFunc", "C:\\Test line.doc", "", "", "", ""); mdm.Dialogs.prompt(Return); Пример 4 Регулярные выражения. В примере в передаваемой строке ищется адрес e-mail и производится его разбор. var vbCode = 'Function MyFunc(a,b,c,d,e)\r'; vbCode += 'Dim oRe, oMatch, oMatches\r'; vbCode += 'Set oRe = New RegExp\r'; vbCode += 'oRe.Pattern = \"(\\w+)@(\\w+)\\.(\\w+)\"\r'; vbCode += 'Set oMatches = oRe.Execute(a)\r'; vbCode += 'Set oMatch = oMatches(0)\r'; vbCode += 'retStr = \"Email address is: \" & oMatch\r'; vbCode += 'retStr = retStr & vbNewline\r'; vbCode += 'retStr = retStr & \"Email alias is: \" & oMatch.SubMatches(0)\r'; vbCode += 'retStr = retStr & vbNewline\r'; vbCode += 'retStr = retStr & \"Organization is: \" & oMatch. SubMatches(1)\r'; vbCode += 'retStr = retStr & vbNewline\r'; vbCode += 'retStr = retStr & \"Domain is: \" & oMatch. SubMatches(2)\r'; vbCode += 'MyFunc = retStr\r'; vbCode += 'End Function\r'; var Return = mdm.System.VBScript.execute(vbCode, "MyFunc", "Please send mail to dragon@xyzzy.com. Thanks!", "", "", "", ""); mdm.Dialogs.prompt(Return); Построчное чтение текстового файла. Аргументы вызова - полное имя файла и номер строки, которую нужно прочитать. var vbCode = 'Function GetLineTextFile(a,b,c,d,e)\r'; vbCode += 'Const ForReading = 1, ForWriting = 2\r'; vbCode += 'Dim fso, MyFile, res\r'; vbCode += 'Set fso = CreateObject(\"Scripting.FileSystemObject\")\r'; vbCode += 'Set MyFile = fso.OpenTextFile(a, ForReading)\r'; vbCode += 'For i=1 To b\r'; vbCode += 'res = MyFile.ReadLine\r'; vbCode += 'On Error Resume Next\r'; vbCode += 'If res = GetLineTextFile Then\r'; vbCode += 'res = "End line number " & CStr(i-1) & ": " & GetLineTextFile\r'; vbCode += 'GetLineTextFile = res\r'; vbCode += 'Exit Function\r'; vbCode += 'End If\r'; vbCode += 'GetLineTextFile = res\r'; vbCode += 'Next\r'; vbCode += 'MyFile.Close\r'; vbCode += 'End Function\r'; res = mdm.System.VBScript.execute(vbCode, "GetLineTextFile", "c:\\testfile.txt", 1009); mdm.Dialogs.prompt(res); В случае, если передан номер строки, больший их общего количества в файле, возвращается номер последней строки и она сама. Последний раз редактировалось alexcon314; 13.09.2007 в 03:13. |
![]() |
Часовой пояс GMT +4, время: 14:41. |
|
|
« Предыдущая тема | Следующая тема » |
|
|