Страница 19 из 27
Добавлено: Пт май 06, 2011 20:40
Flasher
HEXFIX писал(а):В коде скрипта по ссылке: "Requirements: Script Helper ActiveX for TC by Volniy"
А, ну да. Забыл. Там без этого трудновато. Хотя скрипт сам по себе даёт более универсальный вариант перезапуска. Сделать без Хелпера скрипт, аналогичный примеру в DemoScripts - не проблема. Надо?
Добавлено: Пт май 06, 2011 23:56
HEXFIX
Flasher
Надо?
Если он будет работать при запуске тотала с флэшки, то да, надо!
Добавлено спустя 2 минуты 50 секунд:
Ну и чтоб на 64-бит работал при этом.
Добавлено: Сб май 07, 2011 02:35
Flasher
Что-то наподобие этого:
Код: Выделить всё
With CreateObject("WScript.Shell")
TCExe = .ExpandEnvironmentStrings("%Commander_Path%\totalcmd.exe")
.SendKeys "%{F4}"
WScript.Sleep 50
.Exec(TCExe)
End With
Добавлено: Сб май 07, 2011 21:31
Serge Yolkin
Вопрос к знатокам (JScript): а можно ли убить зависшую функцию? Не цикл. Ну, например:
Код: Выделить всё
function MyBedniyFunction(){
objNeZnayuGde.GetNeZnayuChto();
}
вызывается с кнопки (hta), в 99 случаях работает прекрасно, а в сотом - виснет насмерть. Сообщений об ошибке нет, поэтому try не помогает. Только процесс убивать (mshta) вместе с окошком. Вот бы еще такую функцию, чтобы прерывала предыдущую... С кнопки там, или по таймауту...
Добавлено: Сб май 28, 2011 02:41
Flasher
Serge Yolkin
Какой-то аналог WScript.Timeout должен быть.
All
Никто не знает, почему имитация Esc (SendKeys/SendKeyStroke) при задействовании в файловой панели TC впадает в тяжёлый ступор (цикл)?
Добавлено: Вс июл 24, 2011 19:51
Andrey_A
Подскажите пожалуйста как в скрипте vbs использовать функции другого скрипта, где прописаны только функции
В AkelPad есть функция AkelPad.Include("Functions.vbs")
В au3 есть #include <Excel.au3>
А как в vbs?
Добавлено: Пн июл 25, 2011 09:51
Batya
Andrey_A писал(а):как в скрипте vbs использовать функции другого скрипта, где прописаны только функции
Код: Выделить всё
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Execute FSO.OpenTextFile("C:\Путь\IncludeFile.vbs").ReadAll
...
Добавлено: Пн июл 25, 2011 10:30
Andrey_A
Спасибо, а я через eval(FSO.Open...) пытался
Добавлено: Вт сен 13, 2011 16:12
Andrey_A
Подскажите, пожалуйста такую вещь
Есть текст, как можно создать коллекцию, объктом 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
есть ли что-нибудь покороче.
Добавлено: Вт сен 13, 2011 17:41
Flasher
Знать бы ещё, что такое 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 писал(а):есть ли что-нибудь покороче.
В каком смысле "покороче"? Число строк можно сократить, если писать массив в цикл без создания переменной. Куда тут короче?
Добавлено: Ср сен 14, 2011 22:44
Andrey_A
Flasher
Спасибо, там наверно не
If i > vbNullString Then D.Add i, ""
а
If i > vbNullString Then oDict.Add i, ""
Добавлено: Ср сен 14, 2011 23:44
Flasher
Да, я со своего скрипта скопипастил, не обратил внимания.
Добавлено: Чт сен 15, 2011 20:47
ApceH
У меня есть скрипт для убивания процессов всех программ, лежащих в указанной папке (нужно при (де)инсталляции пака):
Код: Выделить всё
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
В первом аргументе передаётся путь.
Вполне работает... Но убивает процессы только текущего пользователя. Если кто-то ещё вошёл в систему и запустил какую-нибудь прогу — тот процесс не убъётся...
Как решить задачу?
Добавлено: Чт сен 15, 2011 22:43
Serge Yolkin
ApceH писал(а):Как решить задачу?
Запускать скрипт от админа (в Vista/7 - еще и с повышением прав)
Добавлено: Чт сен 15, 2011 22:57
ApceH
Serge Yolkin
Нет.
Сейчас смотрю, выдаются-то все процессы.
Но Terminate не срабатывает. Причем НЕ из-за прав, а, как я подозреваю, из-за того, что сеанс пользователя приостановлен...