Я пытаюсь написать простую программу, которая будет проверять каждые 5 секунд, если какой-то процесс запущен, а если это так, а затем убить его. Программа должна работать в фоновом режиме и запускаться при каждом запуске машины. Его написанные на VB процесс до сих пор:Сканировать процесс, а затем убить его, как только его нашли, и начать с нуля
Module Module1
Private Declare Auto Function ShowWindow Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal nCmdShow As Integer) As Boolean
Private Declare Auto Function GetConsoleWindow Lib "kernel32.dll"() As IntPtr
Private Const SW_HIDE As Integer = 0
Sub Main()
eh:
Dim hWndConsole As IntPtr
hWndConsole = GetConsoleWindow()
ShowWindow(hWndConsole, SW_HIDE)
For Each proc As Process In Process.GetProcessesByName("hl") 'hl is the process to look for
proc.WaitForExit(5000) 'wait up to 5 seconds.
proc.Kill() 'force the process to exit.
Next proc
GoTo eh
Threading.Thread.Sleep(5000) 'Sleep for 5 sec and start over
End Sub
End Module
Но проблема в том, что показывает окно консоли каждый раз, когда он начинает, и он также выходит из строя после того, как он убивает обнаруженный процесс
Спасибо йо u для ответа. Я изменил, как вы предложили, но он по-прежнему падает после того, как он убил процесс и если процесс должен быть перезапущен пользователем. – degaro
Итак, прежде всего используйте 'Try Catch', тогда вы можете лучше обрабатывать ошибки. И я предлагаю вам запустить этот код в отдельном потоке. После того, как вы изменили свой код с помощью команды «Попытка», дайте мне знать сообщение об ошибке. – Tyler