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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

   

titris



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ViSiToR
titris
Если я верно понял, скрипт должен работать циклом, запускать определённую программу, ждать 1.5 м, закрывать её, и так по кругу?  
 
Нет,к сожалению не так ты понял,скрипт должен только закрывать программу,если она запущена в Windows-через полторы минуты,если запущена другая программа,прописанная в скрипте,дожен закрыть и ее.Ничего по циклу там нет,просто в случае открытия программа должна закрыться и так до ребута системы

Всего записей: 48 | Зарегистр. 10-07-2007 | Отправлено: 19:57 12-02-2008
ViSiToR



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

Цитата:
через полторы минуты,если запущена другая программа,прописанная в скрипте,дожен закрыть и ее

После чего? полторы минуты должно пройти после закрытия первой программы?
 

Цитата:
Ничего по циклу там нет,просто в случае открытия программа должна закрыться и так до ребута системы

Без цикла этого не добиться
 
Попытка #2:
 

Код:
Program = "SomeProgram.exe"
 
While True
    WScript.Sleep 300
    
    If ProcessExists("Notepad.exe") Then
        ProcessClose("Notepad.exe")
        
        WScript.Sleep 90 * 1000 '90 секунд
        
        If ProcessExists(Program) Then ProcessClose(Program)
    End If
WEnd
 
Function ProcessExists(ProcessName)
    Set Processes = GetObject("winmgmts://localhost")
    Set myProcEnum = Processes.ExecQuery("select * from Win32_Process")
    For Each Proc In myProcEnum
        If StrComp(Proc.Name, ProcessName, 1) = 0 Or StrComp(Proc.ProcessID, ProcessName, 1) = 0 Then
            ProcessExists = True
            Exit Function
        End If
    Next
    ProcessExists = False
End Function
 
Function ProcessClose(ProcessName)
    Set Processes = GetObject("winmgmts://localhost")
    Set myProcEnum = Processes.ExecQuery("select * from Win32_Process")
    For Each Proc In myProcEnum
        If StrComp(Proc.Name, ProcessName, 1) = 0 Or StrComp(Proc.ProcessID, ProcessName, 1) = 0 Then
            Proc.Terminate
        End If
    Next
End Function


----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 23:07 12-02-2008
titris



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ай,спасибо,ViSiToR,буду пробовать.А будет ли это работать не только со стандартными программами Windows? Имеется ввиду,например xnview.nero,e.t.c?

Всего записей: 48 | Зарегистр. 10-07-2007 | Отправлено: 23:24 12-02-2008
ViSiToR



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

Цитата:
будет ли это работать не только со стандартными программами Windows? Имеется ввиду,например xnview.nero

 
С сервисами? не думаю, для сервиса нужна немного другая функция...
 

Код:
iSrvPID = ServiceExists("xnview.nero", 0)
 
If iSrvPID <> False Then MsgBox "Ok, <xnview.nero> service runing (PID: " & iSrvPID & ")."
 
Function ServiceExists(ServiceName, iPartial)
    Set oServices = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
    Set ServiceEnum = oServices.ExecQuery("select * from Win32_Service")
    
    For Each Serv In ServiceEnum
        If StrComp(Serv.Name, ServiceName, 1) = 0 Or (iPartial And InStr(1, Serv.Name, ServiceName, 1)) Then
            ServiceExists = Serv.ProcessID
            If Not ServiceExists Then ServiceExists = True
            
            Exit Function
        End If
    Next
    
    ServiceExists = False
End Function


----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 01:38 13-02-2008
titris



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Да,с сервисами не работает-говорит,что не удается найти указанный файл,источник WshShell.Exec-а как можно это подправить для сервисов?

Всего записей: 48 | Зарегистр. 10-07-2007 | Отправлено: 20:39 13-02-2008
slech



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
всем ещё разок привет.
может кто всё же поможет разобраться с моим вопросом ?
 
спасибо.

Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 23:07 13-02-2008
ViSiToR



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

Цитата:
как можно это подправить для сервисов?

Функцию я же пирвёл в своём посте, она не работает?

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 11:24 14-02-2008
titris



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

Цитата:
Функцию я же пирвёл в своём посте, она не работает?

Я твой ответ еще не видел на момент написания поста-буду проверять-спасибо

Всего записей: 48 | Зарегистр. 10-07-2007 | Отправлено: 21:39 14-02-2008
highold



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Друзья. кто знает группу "Boom Devil"? Они просто исчезли, а единственный их диск, который у меня был, затерся и восстановлению не подлежит. Помогите найти, пожалуйста!!
 
Добавлено:
Извините, я не то сделал что-то

Всего записей: 21 | Зарегистр. 05-04-2007 | Отправлено: 14:23 15-02-2008
Nervniy2000



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
нужно поменять часть одной из строк в xml файле, подскажите что нибудь.
т.е. открыть, найти, заменить, закрыть измененный.
можт есть какие идеи?

Всего записей: 30 | Зарегистр. 21-02-2006 | Отправлено: 18:13 19-02-2008
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Nervniy2000

Цитата:
нужно поменять часть одной из строк в xml файле, подскажите что нибудь.  
т.е. открыть, найти, заменить, закрыть измененный.  
можт есть какие идеи?

Посмотри сюда - http://forum.ru-board.com/topic.cgi?forum=33&topic=1491&start=460#10
Все то же самое, только замени своими данными...

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 19:29 19-02-2008
DonkeyHottt

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Друзья, можно несколько вопросов:
1. Как в vbs (какая команда) имитирует нажатие стрелок, Tab, ALT, Ctrl, Shift
2. Как закрыть окно зная его название но не используя "Alt-А4", Смысл в том, что в окне одной программы открыто другое окно и если нажать "Alt-А4", то закроется вся программа, а нужно закрыть только это окно, которое внутри. Названия этих окон разные.
Спасибо всем за помощь!

Всего записей: 104 | Зарегистр. 26-12-2004 | Отправлено: 21:46 19-02-2008
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
DonkeyHottt
1.

Код:
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.SendKeys("{TAB}")

 
2. Можно активировать окно, и попрбовать послать ему ESC...
 

Код:
Set WshShell = CreateObject("WScript.Shell")
 
Title = "Window Title"
 
Active = WinWaitActivate(Title, 5)
 
If Active Then WshShell.SendKeys("{esc}")
 
Function WinWaitActivate(Title, TimeOut)
    TimerInit = Timer
    iRet = WshShell.AppActivate(Title)
    While iRet = 0
        Wscript.Sleep(10)
        iRet = WshShell.AppActivate(Title)
        If TimeOut > 0 And (Timer - TimerInit) >= TimeOut Then
            WinWaitActivate = 0
            Exit Function
        End If
    WEnd
    WinWaitActivate = 1
End Function


----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 00:33 20-02-2008
Nervniy2000



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

Цитата:
Посмотри сюда - http://forum.ru-board.com/topic.cgi?forum=33&topic=1491&start=460#10
Все то же самое, только замени своими данными...

все бы хорошо, только структура у всех файлов разная, но во всех есть одинаковые фрагменты. нужно найти фрагмент и заменить его.

Всего записей: 30 | Зарегистр. 21-02-2006 | Отправлено: 13:28 20-02-2008
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Nervniy2000

Цитата:
структура у всех файлов разная, но во всех есть одинаковые фрагменты. нужно найти фрагмент и заменить его.

Если исходить из того примера (а тебе он нужен не весь, инпутбоксы тебе ни к чему), то просто в переменную str пишешь фрагмент, который тебе нужно заменить, а в переменную str2 - то чем нужно заменять.  

Код:
    ' Читаем нужный файл  
Set fso = CreateObject("Scripting.FileSystemObject")  
  Set f = fso.OpenTextFile("имя файла", 1)  
  setFile = f.ReadAll  
f.Close  
    ' Включаем регулярные выражения  
Set regEx = New RegExp  
  regEx.Global = True  
  regEx.IgnoreCase = True ' Если регистр символов имеет значение, то поменять на False
    ' Маски для замены  
str="фрагмент, который меняем"  
str2="текст, на который меняем"
    ' Меняем значения нужного фрагмента  
setFile = ReplaceText (setFile, str, str2)  
    ' Записываем в файл  
Set f = fso.OpenTextFile("имя файла", 2)  
 f.Write setFile  
f.Close  
    ' Очищаем  
Set f = Nothing  
Set fso = Nothing  
Set regEx = Nothing  
    ' Функция замены  
Function ReplaceText(txt, patrn, replStr)  
  regEx.Pattern = patrn  
  ReplaceText = regEx.Replace(txt, replStr)  
End Function  

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

Код:
    ' Читаем нужный файл  
Set fso = CreateObject("Scripting.FileSystemObject")  
  Set f = fso.OpenTextFile("имя файла", 1)  
  setFile = f.ReadAll  
f.Close  
        ' Маски для замены  
str="фрагмент, который меняем"  
str2="текст, на который меняем"
    ' Меняем значения нужного фрагмента
setFile = Replace(setFile, str, str2)  
    ' Записываем в файл  
Set f = fso.OpenTextFile("имя файла", 2)  
 f.Write setFile  
f.Close  
    ' Очищаем  
Set f = Nothing  
Set fso = Nothing  
 

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 18:34 20-02-2008
DonkeyHottt

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ViSiToR
Спасибо! А как имитировать нажатие ALT CTRL и стрелок всех четырех?
WshShell.SendKeys("{alt}") дает ошибку.

Всего записей: 104 | Зарегистр. 26-12-2004 | Отправлено: 20:47 20-02-2008
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DonkeyHottt

Цитата:
А как имитировать нажатие ALT CTRL и стрелок всех четырех?  

 
WshShell.SendKeys("+") '  Shift
WshShell.SendKeys("^")  ' Ctrl
WshShell.SendKeys("%") ' Alt
WshShell.SendKeys("{LEFT}") ' Стрелка влево
WshShell.SendKeys("{RIGHT}") ' Стрелка вправо
WshShell.SendKeys("{UP}") ' Стрелка вверх
WshShell.SendKeys("{DOWN}") ' Стрелка вниз
 
Добавлено:
Для имитации нажатия нескольких клавиш с шифтом можно написать:

Код:
WshShell.SendKeys("+(xyz)")

А если только первые две, то:

Код:
WshShell.SendKeys("+(xy)z")

Ну и тому подобное...
Кстати, чтобы имитировать нажатие подряд, ну скажем, трех табов, можно написать так:

Код:
WshShell.SendKeys("{tab 3}")

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 22:03 20-02-2008
DonkeyHottt

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rush
Спасибо!
Работает
Только вот окно всетаки почему-то не закрывается вышеописаным способом.
А можно на vbs имитировать нажатие мышкой на крестик в углу окна? Похоже другим способом его не закрыть

Всего записей: 104 | Зарегистр. 26-12-2004 | Отправлено: 23:05 20-02-2008 | Исправлено: DonkeyHottt, 23:24 20-02-2008
Nagual



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Скрипт для удаления концевых пробелов в файлах
Написан для устранения кривизны тэга [code] движка (админа) форума
Особенно актуален для темы Задачи на bat-файлах
 
Итак, del_spaces.vbs
 
Код:
===============================================
If WScript.Arguments.Count=0 Then
MsgBox
"Не заданы параметры!",,"Удаление концевых пробелов"
WScript.Quit
End If
Set
fso=CreateObject("Scripting.FileSystemObject")
For Each
warg In WScript.Arguments
Set f=fso.GetFile(warg)
Set
txt=f.OpenAsTextStream(1)
Str=""
While Not txt.AtEndOfStream
Str=Str&RTrim(txt.ReadLine())&vbCrLf
Wend
txt.Close
set f1=fso.OpenTextFile(warg,2)
f1.Write Str
f1.Close
Next
===============================================
 
Синтаксис:
del_spaces.vbs file1 [file2 file3 fileN]
 


 
Сценарий для удаления концевых пробелов, а также и пустых строк
В сценарии используется никсовая утилита sed
На выходе получаем файл в кодировке ansi(1251)
Кому надо, цикл для работы с параметрами, дописывайте сами
 
Код:
===============================================
@echo off
chcp 1251>nul
title
Удаление концевых пробелов и пустых строк
set inp=orig.txt
set out=edit.txt
if exist %inp% sed -r -e "/^$/d" %inp%>__._&&sed -r -e "s/[ \t]*$//" __._>__.-&&more __.->%out%&&del/q __.?
===============================================

Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 23:57 20-02-2008 | Исправлено: Nagual, 15:48 14-08-2008
XXXXL



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

Цитата:
Rush
, помоги ещё раз пожалуйста. Только что бы изменилось одно слово PASSWORD.
Если забыл то вот тут почитай
У меня самого никак не получается самому сделать.
вот строка:
ZTnBatch.exe -h 192.168.1.1 -p PASSWORD -c "poe drop poe0"

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 19:29 22-02-2008
   

Страницы: 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