C# 基于时间的进程杀死VB.NET
我试图做的是编写一个应用程序,以便在所需的时间(分钟)内终止进程。主要目标是检查流程是否正在运行,是否正在运行;如果没有,要求终止进程;仍然在后台等待并检查它是否正在运行。我自己不是一个程序员,只是下载并尝试编写一个简单的应用程序。所以请原谅我糟糕的编码技巧 这是我的代码,我有一个计时器,一个状态栏和一个按钮。还听说计时器只能处理1分钟,但我不知道如何将它的间隔转换为分钟C# 基于时间的进程杀死VB.NET,c#,vb.net,C#,Vb.net,我试图做的是编写一个应用程序,以便在所需的时间(分钟)内终止进程。主要目标是检查流程是否正在运行,是否正在运行;如果没有,要求终止进程;仍然在后台等待并检查它是否正在运行。我自己不是一个程序员,只是下载并尝试编写一个简单的应用程序。所以请原谅我糟糕的编码技巧 这是我的代码,我有一个计时器,一个状态栏和一个按钮。还听说计时器只能处理1分钟,但我不知道如何将它的间隔转换为分钟 Public Class Form1 Private Sub Form1_Load(sender As Object
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Timer1.Interval = 1800
CheckIfRunning()
End Sub
Dim p() As Process
Private Sub CheckIfRunning()
p = Process.GetProcessesByName("Zoom") 'Process name
If p.Count > 0 Then
' Process is running
ToolStripStatusLabel1.Text = "ZOOM IS RUNNING"
Else
' Process is not running
ToolStripStatusLabel1.Text = "ZOOM IS NOT RUNNING"
End If
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Dim ZOOM() As Process = Process.GetProcessesByName("Zoom")
Dim ask As MsgBoxResult = MsgBox("30Min limit, Kill Zoom?", MsgBoxStyle.YesNo)
If ask = MsgBoxResult.Yes Then
For Each Process As Process In ZOOM
Process.Kill()
Timer1.Stop()
Timer1.Interval = 1800
Timer1.Start()
Next
Else
Timer1.Stop()
Timer1.Interval = 1800
Timer1.Start()
End If
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Timer1.Start()
End Sub
End Class
这是一种工作方式,但当30分钟的限制完成时,它会发送相同的消息框。我无法让它正常工作,因此需要一些帮助。计时器的
间隔值是毫秒数,而不是秒数。所以1800
是1.8
秒,而不是30
分钟
因为在你的Timer1_Tick
中,你几乎立即拨打了MsgBox
,并且你说你收到了垃圾邮件,我认为你可能使用了错误的计时器。确保您正在为Windows窗体应用程序使用Windows窗体计时器
在显示任何UI之前调用Timer1.Stop()
也是一个好主意,以防止垃圾邮件。Timer1.Interval=1800
将计时器间隔设置为1.8
秒。您只在Form.Load上调用了CheckIfRunning()
,因此没有人知道进程是否在该点之后终止。您应该在Tick处理程序中执行此操作,同时检查30秒周期是否超时:您可能希望比较DateTime对象以验证,在计时器启动时设置时间戳——在没有先暂停计时器的情况下,不要在计时器调用的事件处理程序中显示消息框无需存储p()