А, ну да. Забыл. Там без этого трудновато. Хотя скрипт сам по себе даёт более универсальный вариант перезапуска. Сделать без Хелпера скрипт, аналогичный примеру в DemoScripts - не проблема. Надо?HEXFIX писал(а):В коде скрипта по ссылке: "Requirements: Script Helper ActiveX for TC by Volniy"
Windows Script Host
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Что-то наподобие этого:
Код: Выделить всё
With CreateObject("WScript.Shell")
TCExe = .ExpandEnvironmentStrings("%Commander_Path%\totalcmd.exe")
.SendKeys "%{F4}"
WScript.Sleep 50
.Exec(TCExe)
End With-
Serge Yolkin
- Сообщения: 664
- Зарегистрирован: Сб июл 25, 2009 11:12
Вопрос к знатокам (JScript): а можно ли убить зависшую функцию? Не цикл. Ну, например:вызывается с кнопки (hta), в 99 случаях работает прекрасно, а в сотом - виснет насмерть. Сообщений об ошибке нет, поэтому try не помогает. Только процесс убивать (mshta) вместе с окошком. Вот бы еще такую функцию, чтобы прерывала предыдущую... С кнопки там, или по таймауту...
Код: Выделить всё
function MyBedniyFunction(){
objNeZnayuGde.GetNeZnayuChto();
}Andrey_A писал(а):как в скрипте vbs использовать функции другого скрипта, где прописаны только функции
Код: Выделить всё
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Execute FSO.OpenTextFile("C:\Путь\IncludeFile.vbs").ReadAll
...
Нет, я не сплю. Я просто медленно моргаю.
Подскажите, пожалуйста такую вещь
Есть текст, как можно создать коллекцию, объктом CreateObject("Scripting.Dictionary") , состоящую из отдельных строк
я пытался следующим образом
1. сначала делал массив
2. затем каждое значение присаивал
есть ли что-нибудь покороче.
Есть текст, как можно создать коллекцию, объктом CreateObject("Scripting.Dictionary") , состоящую из отдельных строк
я пытался следующим образом
1. сначала делал массив
2. затем каждое значение присаивал
Код: Выделить всё
ArBasic = Split(Text, vbNewLine)
Set oDict = CreateObject("Scripting.Dictionary")
oDict.RemoveAll
For Each Item In ArBasic
If Len(Item) > 0 Then
If Not bDict.Exists(Item) Then bDict.Add Item, Item
End If
NextЗнать бы ещё, что такое Text.
Код: Выделить всё
Set FSO = CreateObject("Scripting.FileSystemObject")
Text = FSO.OpenTextFile(WScript.Arguments(0), 1).ReadAll
Set oDict = CreateObject("Scripting.Dictionary")
For Each i in Split(Text, vbNewLine)
If i > vbNullString Then D.Add i, ""
NextВ каком смысле "покороче"? Число строк можно сократить, если писать массив в цикл без создания переменной. Куда тут короче?Andrey_A писал(а):есть ли что-нибудь покороче.
У меня есть скрипт для убивания процессов всех программ, лежащих в указанной папке (нужно при (де)инсталляции пака):
В первом аргументе передаётся путь.
Вполне работает... Но убивает процессы только текущего пользователя. Если кто-то ещё вошёл в систему и запустил какую-нибудь прогу — тот процесс не убъётся...
Как решить задачу?
Код: Выделить всё
strComputer = "."
strNamespace = "Root\CIMV2"
Set objService = GetObject("WinMgmts:\\" & strComputer & "\" & strNamespace)
Set WshShell = WScript.CreateObject("WScript.Shell")
Set colProcesses = objService.ExecQuery("SELECT * FROM Win32_Process WHERE ExecutablePath Like '" & Replace(WScript.Arguments(0),"\","\\") & "%'")
For Each objProcess in colProcesses
objProcess.Terminate()
NextВполне работает... Но убивает процессы только текущего пользователя. Если кто-то ещё вошёл в систему и запустил какую-нибудь прогу — тот процесс не убъётся...
Как решить задачу?
-
Serge Yolkin
- Сообщения: 664
- Зарегистрирован: Сб июл 25, 2009 11:12
Serge Yolkin
Нет.
Сейчас смотрю, выдаются-то все процессы.
Но Terminate не срабатывает. Причем НЕ из-за прав, а, как я подозреваю, из-за того, что сеанс пользователя приостановлен...
Нет.
Сейчас смотрю, выдаются-то все процессы.
Но Terminate не срабатывает. Причем НЕ из-за прав, а, как я подозреваю, из-за того, что сеанс пользователя приостановлен...
Последний раз редактировалось ApceH Чт сен 15, 2011 23:07, всего редактировалось 1 раз.