Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript

Модерирует : ShIvADeSt

ShIvADeSt (12-07-2011 15:12): http://forum.ru-board.com/topic.cgi?forum=33&topic=11963#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112

   

tyff

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Большое спасибо,vlth!
Это именно то что надо.

Всего записей: 8 | Зарегистр. 03-03-2010 | Отправлено: 19:57 05-03-2010
GRom V

Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Как можно сделать закрытие процесса по классу окна

Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 13:45 10-03-2010
SerBUser

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уже задавал этот вопрос: http://forum.ru-board.com/topic.cgi?forum=33&topic=1491&start=1400#6. Повторюсь. Есть скрипт, который пользователей из AD экспортирует в Excel. Задача состоит в том, чтобы поменять определенные свойства пользователей, например, наименование предприятия или адрес e-mail и т.д. и из Excel обновить эти данные в AD. Не получается у меня никак.

Всего записей: 124 | Зарегистр. 31-08-2009 | Отправлено: 05:40 11-03-2010
LEX1

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, есть ли лучший способ скачать текстовый файл (в utf-8) по защищенному (https) соединению?
 
Сейчас я использую такой код:
 

Код:
 
// var subscPath = 'http://ruadlist.googlecode.com/svn/trunk/adblock.txt';
var subscPath = 'https://easylist.adblockplus.org/liste_fr+easylist.txt';
var defPath = 'ab.txt';
        try{
            var shell = new ActiveXObject('WScript.Shell');
            shell.Run('wget.exe'+' --no-check-certificate -O "'+defPath+'" '+subscPath, 0, 1);
        }
        catch(e){
            var req = new ActiveXObject('WinHTTP.WinHttpRequest.5.1');
            req.Open('GET', subscPath, false);
            req.Option(4) = 0x3300;
            req.Send();
            var stream = new ActiveXObject('ADODB.Stream');
            stream.Type = 1;
            stream.Open();
            stream.Write(req.ResponseBody);
            stream.SaveToFile(defPath, 2);
            stream.Close();
        };

 
«Microsoft.XMLHTTP», я пробовал но оно выдавало ошибку:

Цитата:
 
Сценарий:    C:\test\somescript.js
Строка:    173
Символ:    4
Ошибка:    Отказано в доступе.
 
Код:    80070005
Источник:     msxml3.dll
 

Ну и от «ADODB.Stream» в идеале хотелось бы избавиться.

Всего записей: 3793 | Зарегистр. 24-10-2005 | Отправлено: 00:08 12-03-2010 | Исправлено: LEX1, 01:11 12-03-2010
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LEX1
ИМХО ты предложил совсем неплохое решение
Вместо wget можно использовать cURL.
Вместо ADODB.Stream - FSO (хоть стрим получаешь, хоть - текст, все равно его сохранить как то надо...)
Код:
// var subscPath = 'http://ruadlist.googlecode.com/svn/trunk/adblock.txt';
var subscPath = 'https://easylist.adblockplus.org/liste_fr+easylist.txt';
var
defPath = 'ab.txt';
with (new
ActiveXObject('WinHTTP.WinHttpRequest.5.1')) {
   
Open('GET', subscPath, false);
   
Option(4) = 0x3300;
   
Send();
   
var
FSO = new ActiveXObject("Scripting.FileSystemObject");
   
with (
FSO.OpenTextFile(defPath, 2, true)) {
       
Write(responseText);
       
Close();
    }
}
 ?  Код создан и опубликован с помощью SciTE-Ru

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 10:59 13-03-2010
LEX1

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В таком варинте, с первой, закомментированной, ссылкой мы почему то получаем ошибку:

Цитата:
 
Сценарий:    C:\Tools\test\1.js
Строка:    10
Символ:    9
Ошибка:    Invalid procedure call or argument
Код:    800A0005
Источник:     Microsoft JScript runtime error
 

Возможно неправильная кодировка?

Всего записей: 3793 | Зарегистр. 24-10-2005 | Отправлено: 13:09 13-03-2010
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LEX1
Странно... Код - рабочий... Походу че то ты поправил - вот и не работает. Ну, ладно - "железный" вариант:
Код:
// var url = 'http://ruadlist.googlecode.com/svn/trunk/adblock.txt';
var url = 'https://easylist.adblockplus.org/liste_fr+easylist.txt';
var
savePath = 'ab.txt';
 
var
req = new ActiveXObject('WinHTTP.WinHttpRequest.5.1');
req.Open('GET', url, false);
req.Option(4) = 0x3300;  // SslErrorIgnoreFlags
req.Send();
var
FSO = new ActiveXObject("Scripting.FileSystemObject");
var
file = FSO.OpenTextFile(savePath, 2, true);
file.Write(req.responseText);
file.Close();
 ?  Код создан и опубликован с помощью SciTE-Ru

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 13:42 13-03-2010
LEX1

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я имел в виду что нужно убрать комментарий у первой ссылки

Код:
var subscPath = 'http://ruadlist.googlecode.com/svn/trunk/adblock.txt';  
// var subscPath = 'https://easylist.adblockplus.org/liste_fr+easylist.txt';

Всего записей: 3793 | Зарегистр. 24-10-2005 | Отправлено: 14:44 13-03-2010
gourkuff

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребят помогите с задачками ,а то у меня хреново с информатикой..
 
Задача 1.На Цикл
Предприятие оштрафовали на х рублей.за каждый день неуплаты к сумме штрафа добавляется пеня=0,5% от суммы штрафа.Сколько затратит через неделю.
 
Задача 2.На цикл
Норма газа за отопительный сезон составляет 100 км^3 на семью.Определить сколько м^3 было израсходовано сверх нормы.если n семей и каждая потребляет не меньше нормы.
 
Задача3
Температура больного изменялась в течении 2-х недель.Опередить,сколько дней держалось повышение?

Всего записей: 2 | Зарегистр. 14-03-2010 | Отправлено: 09:20 14-03-2010
SerBUser

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вроде проблему с экпортом данных из Excel в AD решил. Вот код:

Код:
 
'Установка соединения с AD
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open 'Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
'Конец установки соединения с AD
 
'Открытие приложения Excel и указание файла для обработки
 
Worksheets("Лист1").Activate
'Начало цикла перебора строк в Excel'e
i = 11
Do Until Worksheets("Лист1").Cells(i, 1).Value = ""
 
 strCN = Worksheets("Лист1").Cells(i, 1).Value
 strAcc = Worksheets("Лист1").Cells(i, 2).Value
 
 pathcheck = ""
    'Поиск и получение пути к пользователю в AD
     
    objCommand.CommandText = "<LDAP:// " & strCN & ">;(sAMAccountName=" & strAcc & ");AdsPath, cn;subTree"
    Set rs = objCommand.Execute
 
    Do While rs.EOF = False
     pathtouser = rs.Fields("AdsPath")
     pathcheck = pathtouser
     usercn = rs.Fields("cn")
     rs.MoveNext
    Loop
     'Конец поиска и получение пути к пользователю в AD
     'Измeнение свойст пользователя
     
       If pathcheck = "" Then
        'Пользователь не найден-ничего не делаем
       Else
       Set objUser = GetObject(pathtouser)
       'проверяем - если в Excel в 7 столбце (Компания) не пусто и если отличается от того,
       ' что у пользователя в AD - то изменяеи в AD данные
       If (Worksheets("Лист1").Cells(i, 7).Value <> "") Then
        If objUser.Get("company") <> Worksheets("Лист1").Cells(i, 7).Value Then
         objUser.Put "company", Worksheets("Лист1").Cells(i, 7).Value
        End If
       End If
       'проверяем - если в Excel в 6 столбце (Подразделение) не пусто и если отличается от того,
       ' что у пользователя в AD - то изменяеи в AD данные
       If (Worksheets("Лист1").Cells(i, 6).Value <> "") Then
         If objUser.Get("Department") <> Worksheets("Лист1").Cells(i, 6).Value Then
          objUser.Put "Department", Worksheets("Лист1").Cells(i, 6).Value
         End If
       End If
       'проверяем - если в Excel в 8 столбце (Должность) не пусто и если отличается от того,
       ' что у пользователя в AD - то изменяеи в AD данные
       If (Worksheets("Лист1").Cells(i, 8).Value <> "") Then
         'If objUser.Get("title") <> Worksheets("Лист1").Cells(i, 8).Value Then
          objUser.Put "title", Worksheets("Лист1").Cells(i, 8).Value
         'End If
       End If
       'проверяем - если в Excel в 5 столбце (телефон) не пусто и если отличается от того,
       ' что у пользователя в AD - то изменяеи в AD данные
       If (Worksheets("Лист1").Cells(i, 5).Value <> "") Then
         'If objUser.Get("telephoneNumber") <> Worksheets("Лист1").Cells(i, 5).Value Then
          objUser.Put "telephoneNumber", Worksheets("Лист1").Cells(i, 5).Value
         'End If
       End If
       objUser.SetInfo
    End If
       'Конец изминение свойст пользователя
i = i + 1
Loop
'Конец цикла перебора строк в Excel'e
MsgBox ("Выполнение завершено")
 

Работает все, кроме изменения телефона почему-то. Если заремить строки изменения телефонного номера - отрабатывет без проблем, если с номером - вылетает в debug на строке objUser.Put "telephoneNumber", Worksheets("Лист1").Cells(i, 5).Value
В чем может быть косяк?

Всего записей: 124 | Зарегистр. 31-08-2009 | Отправлено: 10:13 16-03-2010
net19



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет! Треба vbs-помощь. Поставлена задача - прописать альтернативный dns на всех тачках в сети. Названия компов берутся из файла comp.txt. Те компы что не пинганулись записать в файл not_comp.txt. Вот что наваял на скорую:

Код:
 
ForReading = 1
strDNS = Array("10.10.1.5","10.10.1.7") ' первичный и вторичный адреса dns-серверов
Set objFSO = CreateObject ("Scripting.FileSystemObject")
Set CompFile = objFSO.OpenTextFile (".\comp.txt", ForReading)
strComputer = CompFile.ReadAll()
    colComp = split (strComputer, vbCrLf)
    Set noCompFile = objFSO.CreateTextFile (".\not_comp.txt", True)
    For Each compName in colComp
        Set objPing = GetObject ("winmgmts:{impersonationLevel=impersonate}").ExecQuery ("select * from Win32_PingStatus where address = '" & compName & "'")
        For Each objStatus in objPing
            If objStatus.StatusCode<>0 Then
                noCompFile.WriteLine compName
            Else
                Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & compName & "\root\cimv2")
                Set colCON = objWMI.ExecQuery("Select * " & _
                            " From Win32_NetworkAdapterConfiguration " & _
                            " Where IPENabled=TRUE")
       
    For Each objCON In colCON
 
  objCON.SetDNSServerSearchOrder strDNS
   
 
  Exit For
  Exit For
  Exit For
   
Next
            End If
        Next
    Next
    CompFile.Close
    noCompFile.Close
WScript.Echo "Закончили!!!"
 

 
Скрипт отрабатывает, компы, которые не в сети (не пинганулись) записываются в not_comp.txt, а вот днс прописывается только на локальной машине. Ткните пожалуйста на ошибку, которая не позволяет прописывать днс на удаленных системах.

Всего записей: 45 | Зарегистр. 27-09-2006 | Отправлено: 16:52 16-03-2010
Hugo121

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
For Each objCON In colCON  
 
  objCON.SetDNSServerSearchOrder strDNS  
  next  
 
  Exit For  

 
Вроде NEXT не хватает?
 
Нет, ниже есть, не заметил... а тогда зачем сразу  после первого Exit For?

Всего записей: 128 | Зарегистр. 14-08-2007 | Отправлено: 23:26 16-03-2010 | Исправлено: Hugo121, 23:31 16-03-2010
GenyaMS



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здраствуйте! Есть такая задача - получить из Оперы (текст кода/тегов) открытой из VB тем же оператором Shell - страницы. Текст - записать в переменную?
очень нужен код

Всего записей: 184 | Зарегистр. 24-01-2009 | Отправлено: 07:51 17-03-2010
gourkuff

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребят помогите с задачками ,а то у меня хреново с информатикой..
 
Задача 1.На Цикл
Предприятие оштрафовали на х рублей.за каждый день неуплаты к сумме штрафа добавляется пеня=0,5% от суммы штрафа.Сколько затратит через неделю.
 
Задача 2.На цикл
Норма газа за отопительный сезон составляет 100 км^3 на семью.Определить сколько м^3 было израсходовано сверх нормы.если n семей и каждая потребляет не меньше нормы.
 
Задача3
Температура больного изменялась в течении 2-х недель.Опередить,сколько дней держалось повышение?

Всего записей: 2 | Зарегистр. 14-03-2010 | Отправлено: 10:45 17-03-2010
masikrus

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите народ, не понимаю в чём косяк, создал скрипт
 

Код:
Set Processes = GetObject("winmgmts://localhost")  
Set myProcEnum = Processes.ExecQuery _
    ("SELECT * FROM Win32_Process")  
For Each Proc In myProcEnum
    If Proc.Name = "Informer.exe" Then
        Proc.Terminate
            End If
                Next
 

 
работает на всех тачках кроме одной зборки Винды, ХЗ что там натворили
 
Windows XP sp3 вся урезанная в ноль, ошибка
 

Цитата:
error in line 1 error (null)

 
То есть ему не нра  
 

Код:
Set Processes = GetObject("winmgmts://localhost")

 
Есть идеи?

Всего записей: 1 | Зарегистр. 17-03-2010 | Отправлено: 14:37 17-03-2010
niichavo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
masikrus

Цитата:
Есть идеи?

Например, служба "Инструментарий управления Windows" не запущена.
Устранение неполадок с инструментарием WMI в Windows XP с пакетом обновления 2 (SP2)

Всего записей: 836 | Зарегистр. 14-09-2005 | Отправлено: 15:08 18-03-2010
llanowar



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
День бодрый, есть вопрос.  
Есть шара, надо получить список пользователей, у которых на нее есть права, со списком этих самых прав.  
То есть в виде
\\server\public
Иванов - чтение, запись
Петров - чтение
Сидоров - чтение, запись.  
 
на technet смотрел, но не нашел. Прошу помощи.

Всего записей: 110 | Зарегистр. 11-10-2007 | Отправлено: 12:29 23-03-2010
gi4417



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Попалась на глаза книга Ганса-Йохима Берндта "Измерение, управление и регулирование с помощью макросов в Word и Excel".
В книге показано, как с помощью макросов VBA реализовать управление цмфровыми мультиметрами, релейными картами, модемами, ПК-интерфейсами и многое другое с помощью интерфейса RS-232 и библиотеки RSAPI.DLL.
 
 
Пример управления модемом:
 
Attribute VB_Name = "Modul1"
Declare Sub OPENCOM Lib "RSAPI.DLL" (ByVal Parameter$)
Declare Sub CLOSECOM Lib "RSAPI.DLL" ()
Declare Sub TIMEOUT Lib "RSAPI.DLL" (ByVal Ms%)
Declare Function READSTRING Lib "RSAPI.DLL" (ByVal S$) As Integer
Declare Sub SENDSTRING Lib "RSAPI.DLL" (ByVal S$)
 
Sub Модем()
  If vbOK = MsgBox("Этот макрос передает модему, подключенному к порту COM1, команду 'ATI1'", vbOKCancel, "Опрос модема") Then
        OPENCOM "COM1:19200,N,8,1"
        TIMEOUT 300
        SENDSTRING "ATI6" + Chr$(13)
        S$ = Space$(200)
        i = READSTRING(S$)
        MsgBox Mid$(S$, 1, i), vbOKOnly + vbExclamation, "Ответ модема"
        CLOSECOM
   End If
End Sub
 
Ясно, что в WSH "Declare" нет. И это надо как-то обойти.
Используют dunwrap.dll, DynaCall.dll (Гюнтер Борн) и т.п.  
 
1. Можно ли выполнять аналогично управление USB -устройствами и как это будет сложно это будет реализовать(на уровне VBA) ?
 
2. Как это можно реализовать в случае WSH?    
 
 
 

Всего записей: 1 | Зарегистр. 11-02-2008 | Отправлено: 15:01 01-04-2010
nicka



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
есть папки films и autorun. в папке films находятся фильмы а в папке autorun находится файл autorun.ini в котором и нужно менять строчки
 
строчки которых нужно менять
 
title=Disc Title
...
button=Film Title 1
...
action=execute("films\Film Title 1.avi"), minimize
...
button=Film Title 2
...
action=execute("films\Film Title 2.avi"), minimize
...
button=Film Title 3
...
action=execute("films\Film Title 3.avi"), minimize
 
возможно чтоб при запуске скрипта появился месиджбокс примерно такого вида
 

 
и таким способом изменить строки в ini файле?

Всего записей: 756 | Зарегистр. 01-10-2002 | Отправлено: 01:23 05-04-2010
vlth

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
nicka, пока не очень понятна задача. Посмотрите предыдущую страницу Программирование "удобняшек" на VBScript, стр.75, может быть тот пример что-то подскажет...

Всего записей: 258 | Зарегистр. 22-01-2008 | Отправлено: 14:49 05-04-2010
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript
ShIvADeSt (12-07-2011 15:12): http://forum.ru-board.com/topic.cgi?forum=33&topic=11963#1


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru