-1
私は、特定のプロセスが実行中であれば5秒ごとにチェックする簡単なプログラムを作成しようとしています。プログラムはバックグラウンドで実行する必要があり、マシンを起動するたびに起動されます。 VBで書かれた ITSは、これまで プロセス:プロセスをスキャンして見つけたら、それを一度終了してから再起動
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
しかし、問題があるが、それは毎回コンソールウィンドウを示し、それが起動し、それが検出されたプロセスもちろん
感謝よ:
For Each proc As Process In Process.GetProcessesByName("hl")
はそのような何かを試してみてくださいあなたは応答します。あなたが提案したとおりに変更されましたが、プロセスを強制終了した後、プロセスをユーザーが再起動する必要がある場合でもクラッシュします。 – degaro
まず、 'Try Catch'を使うと、エラーをうまく処理できます。そして、私はあなたが '別のスレッド'でこのコードを実行することをお勧めします。 Tryを使用してコードを編集した後、エラーメッセージを教えてください。 – Tyler