Нужен скрипт

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
МЯФик
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 28.10.2003 (Вт) 18:33

Нужен скрипт

Сообщение МЯФик » 28.10.2003 (Вт) 18:41

Народ!) Нужен скрипт, который при запуске
1)выдавал бы предупреждение, что будут выгружены 2 процесса из памяти
2) выгружал бы эти 2 процесса
3)Загружал 1 процесс (просто один файл загружает 2 процесса:)
4) выдавал бы предупреждение что закончил )))

Ой что написал... надеюсь понятно...
Мона такое сделать?

Заранее спасибо!
Удачи...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 29.10.2003 (Ср) 9:18

msgbox "Ща почудим!"
terminateprocess (params1)
terminateprocess(params2)
createprocess(params)
msgbox "Ну вот и почудили!"
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 29.10.2003 (Ср) 11:32

Неправда твоя, GSerg. API в скриптинге не работает.

Должно использовать WMI.

Код: Выделить всё
set wmiobj = getobject("winmgmts:{impersonationLevel=impersonate}.")
set wos = wmiobj.instancesof("Win32_Process")
msgbox "Закрываем 2 процесса"
for i = 1 to 2
wos.item(i).terminate(0)
next


Создание процесса - через Win32_Process.Create но мне лень код писать - долго потому что :) В MSDN короче все есть.

МЯФик
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 28.10.2003 (Вт) 18:33

Сообщение МЯФик » 29.10.2003 (Ср) 11:43

Спасибо! а мона поподробнее... в качестве параметра нужна указывать объект или название файла... и как он вызывется по ID или по названию... Изложу поподробнее:

есть 2 процесса в памяти: rso_srv.exe и dacsrv.exe их нужно убить ))
потом нужно запустить екзешник c:\program files....\rso_srv.exe и выдать message box...
Я не программист... просто понадобилось сделать такую штуку для удобства..
Заранее спасибо за ответ!
Удачи

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 29.10.2003 (Ср) 12:20

Тогда так:

Код: Выделить всё
set wmiobj = getobject("winmgmts:{impersonationLevel=impersonate}\\.")
set wos = wmiobj.instancesof("Win32_Process")
msgbox "Закрываем 2 процесса"
for each prc in wos
if prc.name = "rso_srv.exe" or prc.name = "dacsrv.exe" then prc.terminate(0)
next

МЯФик
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 28.10.2003 (Вт) 18:33

Сообщение МЯФик » 30.10.2003 (Чт) 11:37

Я так понял что этот скрипт закрывает эти 2 процесса...
а как его после этого запустить... то есть после этого нужно запустить екзешник с:\progr files\.....\rso_srv.exe
ну и message box напоследок)

СПАСИБО!

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 30.10.2003 (Чт) 11:42

Ну запуск делается примерно так:

Код: Выделить всё
set obj = createobject("WSCript.Shell")
obj.run " c:\program files....\rso_srv.exe"
msgbox "Запустили"

МЯФик
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 28.10.2003 (Вт) 18:33

Сообщение МЯФик » 30.10.2003 (Чт) 11:45

да... вот еще... я его попробовал... этот скрипт выгружает только один процесс (rso_srv.exe) а dacsrv.exe остается... :roll:
наверно нужно его поправить)

спасибо за помощь! :)

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 30.10.2003 (Чт) 11:48

Если процесс не завершается, то не в скрипте дело. У тебя может просто прав нет его выгружать.

МЯФик
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 28.10.2003 (Вт) 18:33

Сообщение МЯФик » 30.10.2003 (Чт) 12:02

Пользователь под которым я вхожу является локальным админом для этой машины... ОС Window 2000 Advanced Server
Какие еще нужны права?
Все равно спасибо... я думаю можно обойтись перезапуском тока этой службы... может dac и не обязательно)

to all: может кто еще знает почему служба не выгружается? :)

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 30.10.2003 (Чт) 12:09

Потому что есть службы, которые не может выгрузить даже админ. Система может считает что она без этого рпоцесса жить не сможет. Вот и не дает.

МЯФик
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 28.10.2003 (Вт) 18:33

Сообщение МЯФик » 30.10.2003 (Чт) 13:43

понимаешь.... я бы это понял если бы этот dacsrv нельзя было выгрузить из таск манагера (ошибка бы вылетала) но он же выгружается)) как и rso_srv...

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 30.10.2003 (Чт) 14:05

А в Task Manager процесс так и называется dacsrv.exe? Это я к тому что скрипт его по имени проверяет.

И еще - может, dacsrv.exe нельзя завершить перед вторым процессом? Они друг от друга зависят?

МЯФик
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 28.10.2003 (Вт) 18:33

Сообщение МЯФик » 30.10.2003 (Чт) 17:46

да.. процесс так и называется DacSrv.exe
в таск манагере их мона выключать в любом порядке
а файл rso_srv.exe загружает 2 процесса (rso_srv.exe и DacSrv.exe)

да... и неплохо было бы снабдить этот скрипт тайм аутом секунд на 5 до загрузки rso_srv.exe

Спасибо!!

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 30.10.2003 (Чт) 18:10

Тогда надо сделать:

1) в строке if prc.name = "rso_srv.exe" or prc.name = "dacsrv.exe" then prc.terminate(0) написать DacSrv.exe именно так как показывается в окне Task Manager.

2) Перед obj.run " c:\program files....\rso_srv.exe" вставить строчку

wscript.sleep 5000

МЯФик
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 28.10.2003 (Вт) 18:33

Сообщение МЯФик » 31.10.2003 (Пт) 12:31

Воотт... теперь скрипт выгружает эти процессы но файл запускать не хочет... Ругается на 9 линию char 1 говорит, что файл не найден хотя я копировал из проводника.... странно..

Код: Выделить всё
set wmiobj = getobject("winmgmts:{impersonationLevel=impersonate}\\.")
set wos = wmiobj.instancesof("Win32_Process")
msgbox "Сейчас будет перезапущен серевер Visma Sales Office"
for each prc in wos
if prc.name = "rso_srv.exe" or prc.name = "DacSrv.exe" then prc.terminate(0)
next
set obj = createobject("WSCript.Shell")
wscript.sleep 5000
obj.run "C:\Program Files\Visma\SalesOffice\rso_srv.exe"
msgbox "Серевер перезапущен :)))"


Вот так))

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 31.10.2003 (Пт) 14:15

Попробуй в obj.run "C:\Program Files\Visma\SalesOffice\rso_srv.exe" кавычки удвоить.

МЯФик
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 28.10.2003 (Вт) 18:33

Сообщение МЯФик » 31.10.2003 (Пт) 14:49

что не получается дублировать кавычки... получилось
obj.run ""C:\Program Files\Visma\SalesOffice\rso_srv.exe""
пишет expected end of statement
line 9
char 11
пробовал дублировать слеши... тоже не принимает...
что то не получается найти на msdn синтаксис obj.run..
там какая то фигня...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот, Yandex-бот и гости: 10

    TopList