VBScript * непреднамеренно * останавливается на фоне

Для краткого описания кода, который у меня есть, я хочу отслеживать определенное приложение с именем «CostX.exe», если оно закрывается и открывается, и я регистрирую его в файле с именем CostXLog.txt. Я держу это в бесконечном цикле. Проблема в том, что я не знаю почему, но он работает в течение короткого периода, когда я не делаю ничего продуктивного, но когда я делаю, скрипт просто пауза или я должен сказать, что он больше не работает, хотя он все еще остается в фоновом режиме. Это должен быть его желаемый результат.

Opened at: 4/7/2021 9:00:52 AM
Closed at: 4/7/2021 9:07:56 AM
CostX was opened for 7 minutes and 4 seconds.

Но когда я говорю, что делаю что-нибудь продуктивное, результат остается на уровне

Opened at: 4/7/2021 9:00:52 AM

Это мой код

Option Explicit
Const ForReading = 1, ForAppending = 8
Dim i, processName, strComputer
Dim fso, inName, outName, shell, curDir, objWMIService, colProcessList
Set fso = CreateObject("Scripting.FileSystemObject")
Set shell = CreateObject("WScript.Shell")
curDir = shell.CurrentDirectory
outName = curDir & "\CostXLog.txt"
Dim counter1, counter2, initialOpen
Dim minDiff, secDiff
Dim timedate1, timedate2
timedate1 = Date() & " " & Time()
initialOpen = 0
counter1 = 0
counter2 = 1
'msgbox curDir
strComputer = "."

processName = "CostX.exe"

Dim newFile, outputFile 
newFile = Not fso.FileExists( outName )

while(true)
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colProcessList = objWMIService.ExecQuery _
        ("Select Name from Win32_Process WHERE Name LIKE '" & processName & "%'")
    Set outputFile = fso.OpenTextFile( outName, ForAppending, True )
    if initialOpen = 0 Then
        outputFile.WriteLine "Ignore time after this line"
        initialOpen = 1
    else
        
        If colProcessList.count>0 then
            If counter1 = 0 Then
                outputFile.WriteLine "Opened at: " & Date() & " " & Time()
                timedate1 = Date() & " " & Time()
                counter1 = 1
                counter2 = 1
            End If
            
        else
            If counter2 = 1 Then
                outputFile.WriteLine "Closed at: " & Date() & " " & Time()
                timedate2 = Date() & " " & Time()
                minDiff = DateDiff("s", timedate1, timedate2)/60
                secDiff = DateDiff("s", timedate1, timedate2)
                outputFile.WriteLine "CostX was opened for " & Fix(minDiff) & " minutes and " & secDiff - (Fix(secDiff/60) * 60) & " seconds."
                counter2 = 0
                counter1 = 0
            End If
        End if
    End If
    outputFile.Close
    WScript.Sleep 50
wend

Set objWMIService = Nothing
Set colProcessList = Nothing

PS: Я не программист, я собрал это из многих источников в Интернете, я немного понимаю, но некоторые части там, я действительно понятия не имею, я просто знаю, что они работают так, как я хочу к. Думаю, кто-нибудь может дать мне представление о том, как поддерживать его работоспособность, независимо от того, что я делаю на своем компьютере. Что-то не так с тем, что я сделал в коде? Я также сделал пакетный сценарий с той же целью, проблема та же, она также была сделана с помощью цикла, и он приостанавливается, когда я занят работой.

Обновлено: я не знаю, почему я получаю отрицательный голос, могу ли я получить хотя бы обратную связь, какие-либо мысли или комментарии к моему сообщению. Я знаю, что мое программирование - отстой, я в курсе и мне очень жаль, если я обидел любого законного программиста.

Вы признаете, что понятия не имеете, какие части вашего кода делают. Таким образом, вы фактически просите других отладить его за вас. SO не для этого, поэтому вы получите отрицательные голоса.

Rno 07.04.2021 14:44

Если быть точным, то «некоторые части, которые я не понимаю» - это значения для objWMIService и colProcessList, я действительно не могу это понять, остальную часть кода я сделал сам. На самом деле я не прошу отладки, если проблема может быть указана, просто взглянув на сам код, я приму любые наблюдения, которые могут быть у вас или других. А может, проблема в самой ОС? Есть ли какие-то ограничения в ОС при использовании скриптов с бесконечным циклом?

trexed1509 08.04.2021 03:32

У меня нет формального образования по программированию, так как я выпускник другой специальности, я изучал их только самостоятельно. Я буду уважать любые ваши комментарии. Мне очень жаль, если мне кажется, что я просто прошу других отладить это для меня. Как я сказал в последних строках своего сообщения, мне нужны только мысли или отзывы о моем коде, любая мелочь может помочь мне понять, почему возникает моя проблема. Спасибо.

trexed1509 08.04.2021 03:34

@ trexed1509 Я попробовал код, заменив CostX.exe на notepad.exe и проверив файл журнала в notepad ++, и у меня он работает. Когда вы говорите do anything productive, это означает работу с этим exe или работу с другими приложениями?

Flakes 08.04.2021 07:08

В моем случае он работал с тем же приложением. Странно то, что код действительно работает, если я просто тестирую его, как будто закрываю и открываю приложение, скрипт действительно заполнит файл CostXLog.txt, как и предполагалось, однако, если я глубоко погрузюсь в свою работу, скажем будьте заняты работой около 20 минут, скрипт больше не заполняет файл .txt после того, как я закрываю и открываю приложение. Надеюсь, мое объяснение понятно. Спасибо @Flakes за то, что нашли время ответить.

trexed1509 08.04.2021 08:26
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
51
0

Другие вопросы по теме