Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Программирование "удобняшек" на VBScript

Автор: SANIOK_AV
Дата сообщения: 12.10.2009 16:30
Доброго времени суток!
При помощи скрипта вытаскиваю из журнала системных событий события по ID:

Код: cscript EVTQUERY.vbs /FO LIST /V /L Security /FI "ID eq 512" /FI "Datetime eq 10.10.2009,01:00:00AM-11.10.2009,01:00:00AM" > sec.log
cscript EVTQUERY.vbs /FO LIST /V /L Security /FI "ID eq 513" /FI "Datetime eq 10.10.2009,01:00:00AM-11.10.2009,01:00:00AM" >> sec.log
cscript EVTQUERY.vbs /FO LIST /V /L Security /FI "ID eq 529" /FI "Datetime eq 10.10.2009,01:00:00AM-11.10.2009,01:00:00AM" >> sec.log
Автор: TYMAH3003
Дата сообщения: 13.10.2009 10:29
Вот есть скрипт с зацикливанием, то есть на постояне висит в процессах WScript.exe,
чем дополнить скрипт чтобы при повторном его запуске не появлялся ещё 1 процесс WScript.exe и при ещё 1 запуске ещё 1 WScript.exe WScript.exe WScript.exe, нужно чтоб был только 1 WScript.exe и всё

Код: dim app
i=0
do while i = 0
If Not myProc Then
Set Processes = GetObject("winmgmts://localhost")
Set myProcEnum = Processes.ExecQuery("select * from Win32_Process")
myProc = False
For Each Proc In myProcEnum
If Proc.Name = "notepad.exe" Then
myProc = True
End If
Next
If Not myProc Then
WScript.Echo "Что то я НЕ вижу что запущен Блокнот." & vbNewLine & "Ща я его запушу!..."
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "notepad.exe", 1, true
Else
WScript.Echo "Блокнот уже запущен!"
End If

Else
End If
WScript.Sleep 100
loop
Автор: bomzzz
Дата сообщения: 13.10.2009 12:43
проверкой что такой процесс запущен в начале
Автор: TYMAH3003
Дата сообщения: 13.10.2009 13:10
bomzzz
Да я впринципе понимаю я не могу сам код написать(((
черкани если не сложно
Автор: mozers
Дата сообщения: 13.10.2009 21:13
TYMAH3003
Проверять наличие в процесах wscript - это только четверть дела
Код: ' Защита от повторного запуска скрипта
proc_count = 0
For Each Proc In GetObject("winmgmts:\\.\root\CIMV2").ExecQuery("select * from Win32_Process")
If InStr(
Proc.Name, "script.exe") > 0 Then ' наличие wscript или cscript
If InStr(Proc.CommandLine, WScript.ScriptFullName) > 0 Then ' наличие ком.строки с данным скриптом
proc_count = proc_count + 1
End If
End If
Next

If
proc_count > 1 Then
WScript.Echo "Этот скрипт уже запущен!"
WScript.Quit
End If

WScript.Echo "Работаю"
' А тут уже пишите Ваш код....
Автор: MoRTaL SaTAnO
Дата сообщения: 15.10.2009 04:31
Доброго времени суток!

Eважаемые гуру своего собственного дела, есть вопрос:

Возможно ли управлять различными устройствами (девайсами) средствами WSH + WMI (к примеру - веб-камера USB)

Пробовал смотреть в сторону принтеров (встречаются такие скрипты), но там идет копание в сторону .network

(А задача собственно состоит в том, чтобы запуская скрипт можно было использовать методы работы с классом устройства)
Автор: Deft
Дата сообщения: 15.10.2009 07:31
Здравствуйте.
Требуется создать объект в сетевом окружении. Причем тип должен быть такой же как при создании через Сетевое окружение-добавить новый элемент. т.е. тип ПАПКА.
нашел только скрипт

Код:
Const NETHOOD = &H13&
Set objWSHShell = CreateObject("Wscript.Shell")
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(NETHOOD)
Set objFolderItem = objFolder.Self
strNetHood = objFolderItem.Path
strShortcutName = "F на I2724-app005"
strShortcutPath = "\\i2724-app005\F"
Set objShortcut = objWSHShell.CreateShortcut(strNetHood & "\" & strShortcutName & ".lnk")
objShortcut.TargetPath = strShortcutPath
objShortcut.Save
Автор: TYMAH3003
Дата сообщения: 15.10.2009 08:19
mozers
Хочу сделать уточнение по поводу этой строки

Код: If InStr(Proc.Name, "script.exe") > 0 Then ' наличие wscript или cscript
Автор: alroy
Дата сообщения: 15.10.2009 09:50
TYMAH3003

Код: If InStr(LCase(Proc.Name), LCase("script.exe")) > 0 Then ' Наверное это поможет
Автор: TYMAH3003
Дата сообщения: 15.10.2009 13:13
alroy
Работает как часы +1
Автор: bargo
Дата сообщения: 15.10.2009 14:49
Всем добрый день.

Возник такой вопрос.

На виртуалке поднят терминальный сервер.
Подключение с рабочей станции через сессию RDP.

В общем пока окно сессии открыто и активно - скрипт обрабатывает нажатия клавиш,
стоит окно сессии свернуть или закрыть скрипт отрубается.

Почему, догадываюсь.

Но вот как с эти бороться?
Автор: mozers
Дата сообщения: 16.10.2009 00:28
MoRTaL SaTAnO
Цитата:
Возможно ли управлять различными устройствами (девайсами) средствами WSH + WMI (к примеру - веб-камера USB)
Обычно в комплекте с ними идет соответствующий ActiveX (если есть возможность управлять с веб-страницы - то смотри в ней). Подключаешь его обычным порядком и пользуешь его свойства и методы...
А без заточенного под конкретную модель ActiveX (через WMI допустим) ты кроме вкл/выкл врядли что настроишь.

Deft
Интересная задачка
Пока придумал только так
Код: ShortcutName = "DIR на Server"
ShortcutPath = "\\Server\DIR"

Set WshShell = CreateObject("WScript.Shell")
Set
FSO = CreateObject("Scripting.FileSystemObject")
Set
Shell = CreateObject("Shell.Application")

NetHood = WshShell.SpecialFolders("NetHood")
Set
Folder = FSO.GetFolder(NetHood)
For Each
SubFolder In Folder.SubFolders
Shell.NameSpace(NetHood).CopyHere(SubFolder.Path)
WshShell.CurrentDirectory = NetHood
With WshShell.CreateShortcut("Копия " & SubFolder.Name & "\target.lnk")
.
TargetPath = ShortcutPath
.Save()
End With
FSO.MoveFolder "Копия " & SubFolder.Name, ShortcutName
Exit For
Next
Автор: Deft
Дата сообщения: 16.10.2009 03:31
mozers
так этот скрипт копирует "ярлык" независимо от того что я указываю в ShortcutPath = .
Да, имя он берет которое я вписываю, а вот путь нет. Да и создавать мне надо эти "ярлыки" на компах на которых никаких других "ярлыков" в сетевом окружении нет...

з.ы. а, нет. путь берет откуда надо. просто коментарий от копируемого ярлыка берет..
Автор: mozers
Дата сообщения: 16.10.2009 18:10
Deft
Ну я же сказал - "Интересная задачка"
Просто эти "ярлыки" в NetHood - совсем и не ярлыки на самом деле. Созданные вручную эти "Папки" с файлами Desktop.ini и target.lnk внутри, Проводник за ярлыки не считает. Вот поэтому, кроме как создавать копию от существующих ничего не придумал
Автор: mozers
Дата сообщения: 16.10.2009 22:43
Deft
Ты не поверишь! Я таки придумал
Код: ' Создание ярлыка на сетевой ресурс в папке NetHood
ShortCutName = "MyFolder"
ShortCutPath = "\\inet\Script"

Set WshShell = CreateObject("WScript.Shell")
Set
FSO = CreateObject("Scripting.FileSystemObject")
NetHood = WshShell.SpecialFolders("NetHood")

FolderShortcut = NetHood & "\" & ShortCutName
FSO.CreateFolder FolderShortcut
FSO.GetFolder(FolderShortcut).Attributes = 1

With FSO.OpenTextFile(FolderShortcut & "\Desktop.ini", 2, True)
.
Write "[.ShellClassInfo]" & vbNewLine & "CLSID2={0AFACED1-E828-11D1-9187-B532F1E9575D}" & vbNewLine & "Flags=2"
.Close
End With

With
WshShell.CreateShortcut(FolderShortcut & "\target.lnk")
.
TargetPath = ShortCutPath
.Save()
End With
Автор: Deft
Дата сообщения: 17.10.2009 02:36
mozers, спасибо, выручил =)
Автор: GRom V
Дата сообщения: 17.10.2009 04:41
Подскажите....мне нужно чтоб если запущен процесс 1.ехе то служба SL останавливаетяс. Если 1.ехе не запущен то SL запускается.
Я сделал только до остановки подсобите как дальше!?

Do
Set Processes = GetObject("winmgmts://localhost")
Set myProcEnum = Processes.ExecQuery("select * from Win32_Process")
For Each Proc In myProcEnum
If Proc.Name = "1.exe" Then

Set objShellApp = CreateObject("Shell.Application")
Serv = "SL"
If objShellApp.ServiceStop(Serv, false) = 0 Then
Else
End If
End If
Next
loop


И можно ли указать несколько процессов, например 1.ехе, 2.ЕХЕ, 3.ЕХЕ?
Автор: mozers
Дата сообщения: 17.10.2009 10:09
GRom V
Код: Set objShellApp = CreateObject("Shell.Application")
Do
If
IsProcExist("1.exe") and IsProcExist("2.exe") and IsProcExist("3.exe") Then
objShellApp.ServiceStop "SL", false
Else
objShellApp.ServiceStart "SL", false
End If
WScript.Sleep 30000 ' Проверка повторяется через 30 сек
Loop

' Функция проверяет наличие процесса с заданным именем
Function IsProcExist(proc_name)
Set
myProcEnum = GetObject("winmgmts://localhost").ExecQuery("select * from Win32_Process")
For Each
Proc In myProcEnum
If Proc.Name = proc_name Then
IsProcExist = True
Exit Function
End If
Next
IsProcExist = False
End Function
Автор: GRom_V
Дата сообщения: 18.10.2009 01:59
mozers спасибо - все окк. А не подскажешь как можно правильно записать это:

sc create "Служба" binpath= %windir%\system32\служба.exe type= own start= auto displayname= "Название службы" error= ignore depend

Автор: mozers
Дата сообщения: 18.10.2009 11:22
GRom_V
Вопрос не относится к теме топика. Задать его лучше тут. Или прочитать тут.
Автор: GRom_V
Дата сообщения: 18.10.2009 11:57
mozers! Вопрос как раз к теме. Дело в том что я спрашиваю как эту строку записать в VBS!?
Автор: mozers
Дата сообщения: 18.10.2009 13:34
GRom_V
Как в VBS??? - да как обычно...
Код: serv_name = "Служба"
displayname = "Название службы"
binpath = WshShell.ExpandEnvironmentStrings("%windir%\system32\служба.exe")

ret = WshShell.Run("sc create """ & serv_name & """ binpath=""" & binpath & """ type=own start=auto displayname=""" & displayname & """ error=ignore depend", 0, true)
if
ret = 0 Then
WScript.Echo "OK"
Else
WScript.Echo "Ошибка " & ret
End If
Автор: bomzzz
Дата сообщения: 19.10.2009 04:07

Цитата:

<div class="line"><spacer type=block></spacer></div>

        <form method="post" name="form_prolong">
        
            <div class="div_button">
                <input type="submit" name="prolong" value="продлить" class="button">
            </div>
        
        </form>



подскажити как нажать вот тут на кнопку "продлить", перепробовал методом тыка разные варинаты но так и не смог сделать из типового примера для этого.
Автор: Deft
Дата сообщения: 19.10.2009 06:41

Цитата:
Deft
Ты не поверишь! Я таки придумал

Код:
' Создание ярлыка на сетевой ресурс в папке NetHood
ShortCutName = "MyFolder"
ShortCutPath = "\\inet\Script"

Set WshShell = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
NetHood = WshShell.SpecialFolders("NetHood")

FolderShortcut = NetHood & "\" & ShortCutName
FSO.CreateFolder FolderShortcut
FSO.GetFolder(FolderShortcut).Attributes = 1

With FSO.OpenTextFile(FolderShortcut & "\Desktop.ini", 2, True)
.Write "[.ShellClassInfo]" & vbNewLine & "CLSID2={0AFACED1-E828-11D1-9187-B532F1E9575D}" & vbNewLine & "Flags=2"
.Close
End With

With WshShell.CreateShortcut(FolderShortcut & "\target.lnk")
.TargetPath = ShortCutPath
.Save()
End With

Автор: mozers
Дата сообщения: 19.10.2009 10:02
bomzzz
Называется это "Отправка данных с веб-формы".
Способ_1 (самый плохой): Находим окно и с помощью WshShell.SendKeys нажимаем на кнопку "продлить".
Способ_2 В тело документа внедряется скрипт, который после загрузки страницы выполняет form.submit()
Способ_3 Все данные с формы собираются в массив и отправляются либо с помощью XMLHttpRequest либо с помощью утилитки cURL.
В гугле - полно примеров, да и в этом топике были...

Deft
Код: If FSO.FolderExists(FolderShortcut) Then
Автор: bomzzz
Дата сообщения: 19.10.2009 11:34
сендкей тут не подойдет - потому что надо будет продлять 12000 файлов и нужно скрытое окно.
вот с форм сабмит я и експериментировал перебрал все возможные варианты нажать не удалось. что значит "в тело документа внедряется скрипт" я не понимаю - можно ссылку на пример какой нибудь.
а с хттп рекваист я не разобралса. вообще не понимаю че это такое. примеры разобрал - как скачать файл, но сути так и не понял.

я на сером форуме спрашивать пытался, но мне так никто и не ответил вот ссылка, логин и пасворд

Цитата:

http://ifolder.ru/control/?file_id=13690467&code=e90a6fb26cab4578dbe76ca23a8b9f41
пароль seriiforum
логин scriptcoding.info@gmail.com

нужно нажать кнопку продлить
Автор: SANIOK_AV
Дата сообщения: 22.10.2009 11:32
Доброго времени суток!
Ситуация такая:
eventquery.vbs - стандартный скрипт в Windows 2003 Server (C:\WINDOWS\system32\eventquery.vbs).
При помощи фильтров хочу из журналов событий делать выборку по нескольким ID.

Если применяю фильтр (выборка по 2м событиям):

Код: cscript EVENTQUERY.vbs /FO LIST /V /L Security /FI "ID eq 512 OR ID eq 513" /FI "Datetime eq 21.10.2009,01:00:00AM-22.10.2009,01:00:00AM"
Автор: lapaev
Дата сообщения: 25.10.2009 23:15
Доброго времени суток!
Доступ к mail-серверy по http (www.mail.ru). Можно ли и как автоматически получить вложение из письма и поместить его в определенную директорию?
Автор: Ermashov
Дата сообщения: 05.11.2009 16:50
Добрый вечер всем.

Есть проблемка, нужно обработать порядка нескольких тысяч документов word на предмет просмотра параметра используемого шаблона документа, и при необходимости замена этого параметра. Этот параметр если открыть word находится в меню сервис/шаблоны и надстройки/шаблон документа.
Автор: galaxyMINSK
Дата сообщения: 09.11.2009 17:21
Помогите плиз, если кто знает как и есть возможность помочь.
В скайпе можно редактировать свои отправленные сообщения, нужно что бы каждые пять минуть исправляла все отправленные сообщения смайликами.
Что имеем:
1) Server 2003 все пользователи работают в терминале у некоторых открыта два скайпа.
2) Скайп последняя версия
Очень надеюсь на Вашу помощь.
Спасибо.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475

Предыдущая тема: Работа в Delphi c CryptoApi


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.