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 

Single Post  Topic: Windows Script Host 
Author Message
Batya



PostPosted: Wed May 13, 2009 17:20    Post subject: Reply with quote

Parcan wrote:
А можно ли в скрипте узнать не запущен ли он уже?
Чтобы если скрипт запустить 2 раза один выполнялся а второй чухал это и закрывался бы.

Code:
Option Explicit
Dim WMI, ComLine, oProc, oP, Btn, i, ProcCount

On Error Resume Next
'Объявляем объект WMI
Set WMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")
If Err.Number <> 0 Then
  MsgBox Err.Number & ": " & Err.Description
  WScript.Quit
End If
'В командной строке должно быть по 2 слэша, например, C:\\Путь\\до\\файла\\Файл.Расширение
ComLine   = Replace(WScript.ScriptFullName, "\", "\\")
'Ищем в списке процессов по командной строке, не запущен ли уже данный скрипт
Set oProc = WMI.ExecQuery("SELECT * from Win32_Process " &_
            "WHERE CommandLine Like '%wscript%" & ComLine & "%'")
ProcCount = oProc.Count
'Если процессов более одного (с учетом текущего запуска)
If ProcCount > 1 Then
  'Выдаем предупреждение с предложением завершить работу старого скрипта
  Btn = MsgBox("Обнаружен ранее запущенный аналогичный скрипт." &_
        vbNewLine & "Старый процесс будет замещен новым."       &_
        vbNewLine, _
        vbOKCancel + vbQuestion, "Перезапуск скрипта")
  'Если отвечаем "OK"
  If Btn = vbOK Then
    i = 0
    'Убиваем все аналогичные процессы, кроме текущего (он последний)
    For Each oP In oProc
      i = i + 1
      If i = ProcCount Then
        Exit For
      End If
      oP.Delete_
    Next
  Else
    Set oProc = Nothing
    Set WMI   = Nothing
    WScript.Quit
  End If
End If
On Error Goto 0

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


Powered by phpBB © 2001, 2005 phpBB Group