Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Windows Script Host
Goto page Previous  1, 2, 3 ... 18, 19, 20 ... 25, 26, 27  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri May 06, 2011 20:40    Post subject: Reply with quote

HEXFIX wrote:
В коде скрипта по ссылке: "Requirements: Script Helper ActiveX for TC by Volniy"
А, ну да. Забыл. Там без этого трудновато. Хотя скрипт сам по себе даёт более универсальный вариант перезапуска. Сделать без Хелпера скрипт, аналогичный примеру в DemoScripts - не проблема. Надо?
Back to top
View user's profile Send private message
HEXFIX



Joined: 25 Jun 2010
Posts: 173
Location: Калининград

Post (Separately) Posted: Fri May 06, 2011 23:50    Post subject: Reply with quote

Flasher
Quote:
Надо?

Если он будет работать при запуске тотала с флэшки, то да, надо! Smile

Добавлено спустя 2 минуты 50 секунд:

Ну и чтоб на 64-бит работал при этом.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat May 07, 2011 02:35    Post subject: Reply with quote

Что-то наподобие этого:
Code:
With CreateObject("WScript.Shell")
TCExe = .ExpandEnvironmentStrings("%Commander_Path%\totalcmd.exe")
.SendKeys "%{F4}"
WScript.Sleep 50
.Exec(TCExe)
End With
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 25 Jul 2009
Posts: 664

Post (Separately) Posted: Sat May 07, 2011 21:31    Post subject: Reply with quote

Вопрос к знатокам (JScript): а можно ли убить зависшую функцию? Не цикл. Ну, например:
Code:
function MyBedniyFunction(){
  objNeZnayuGde.GetNeZnayuChto();
}
вызывается с кнопки (hta), в 99 случаях работает прекрасно, а в сотом - виснет насмерть. Сообщений об ошибке нет, поэтому try не помогает. Только процесс убивать (mshta) вместе с окошком. Вот бы еще такую функцию, чтобы прерывала предыдущую... С кнопки там, или по таймауту...
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat May 28, 2011 02:41    Post subject: Reply with quote

Serge Yolkin
Какой-то аналог WScript.Timeout должен быть.

All
Никто не знает, почему имитация Esc (SendKeys/SendKeyStroke) при задействовании в файловой панели TC впадает в тяжёлый ступор (цикл)?
Back to top
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Sun Jul 24, 2011 19:51    Post subject: Reply with quote

Подскажите пожалуйста как в скрипте vbs использовать функции другого скрипта, где прописаны только функции
В AkelPad есть функция AkelPad.Include("Functions.vbs")
В au3 есть #include <Excel.au3>
А как в vbs?
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Mon Jul 25, 2011 09:51    Post subject: Reply with quote

Andrey_A wrote:
как в скрипте vbs использовать функции другого скрипта, где прописаны только функции

Code:
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Execute FSO.OpenTextFile("C:\Путь\IncludeFile.vbs").ReadAll
...

_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Mon Jul 25, 2011 10:30    Post subject: Reply with quote

Спасибо, а я через eval(FSO.Open...) пытался
Back to top
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Tue Sep 13, 2011 16:12    Post subject: Reply with quote

Подскажите, пожалуйста такую вещь

Есть текст, как можно создать коллекцию, объктом CreateObject("Scripting.Dictionary") , состоящую из отдельных строк

я пытался следующим образом

1. сначала делал массив
2. затем каждое значение присаивал
Code:
 
  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


есть ли что-нибудь покороче.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Sep 13, 2011 17:41    Post subject: Reply with quote

Знать бы ещё, что такое Text.
Code:
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 wrote:
есть ли что-нибудь покороче.
В каком смысле "покороче"? Число строк можно сократить, если писать массив в цикл без создания переменной. Куда тут короче?
Back to top
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Wed Sep 14, 2011 22:44    Post subject: Reply with quote

Flasher
Спасибо, там наверно не
If i > vbNullString Then D.Add i, ""
а
If i > vbNullString Then oDict.Add i, ""
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Sep 14, 2011 23:44    Post subject: Reply with quote

Да, я со своего скрипта скопипастил, не обратил внимания.
Back to top
View user's profile Send private message
ApceH



Joined: 08 Apr 2011
Posts: 316
Location: Димитровград

Post (Separately) Posted: Thu Sep 15, 2011 20:47    Post subject: Reply with quote

У меня есть скрипт для убивания процессов всех программ, лежащих в указанной папке (нужно при (де)инсталляции пака):
Code:
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

В первом аргументе передаётся путь.
Вполне работает... Но убивает процессы только текущего пользователя. Если кто-то ещё вошёл в систему и запустил какую-нибудь прогу — тот процесс не убъётся...
Как решить задачу?
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 25 Jul 2009
Posts: 664

Post (Separately) Posted: Thu Sep 15, 2011 22:43    Post subject: Reply with quote

ApceH wrote:
Как решить задачу?

Запускать скрипт от админа (в Vista/7 - еще и с повышением прав)
Back to top
View user's profile Send private message
ApceH



Joined: 08 Apr 2011
Posts: 316
Location: Димитровград

Post (Separately) Posted: Thu Sep 15, 2011 22:57    Post subject: Reply with quote

Serge Yolkin
Нет.
Сейчас смотрю, выдаются-то все процессы.
Но Terminate не срабатывает. Причем НЕ из-за прав, а, как я подозреваю, из-за того, что сеанс пользователя приостановлен...


Last edited by ApceH on Thu Sep 15, 2011 23:07; edited 1 time in total
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3 ... 18, 19, 20 ... 25, 26, 27  Next
Page 19 of 27

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group