在我的应用程序中,我允许用户从打开的文件对话框中添加程序,然后将项目添加到列表视图并将项目位置保存到标签中。所以我想做的是当列表视图中的程序被选中并按下按钮时,它启动一个计时器,这个计时器检查进程是否正在运行,如果它没有启动进程,一次进程启动它获取进程的窗口标题并将其发送到另一个表单上的文本框。
编辑:问题是如果有人能看到它为什么不工作,我的意思是启动进程,然后当它开始关闭表单并将进程窗口标题添加到另一个表单上的文本框时。我试图让它工作,但我做不到。我知道它获得的进程名称是正确的我认为我的问题与我的 for 循环有关。基本上它现在没有做任何可见的事情。
我觉得我的代码非常接近,我希望它只需要一些小的调整。任何帮助,将不胜感激。抱歉,如果我的编码实践不是那么好,我对此很陌生。
**编辑:我找到了解决方案。我向按钮添加了代码,使我的计时器能够执行该过程。另一个问题确实是它读取文件的方式,我不得不使用替换功能从文件路径代码中删除“.exe”。
编辑 2:Mark Hall 发布了一个更好的解决方案。我现在正在使用他的代码,因为它出错的可能性较小。
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim s As String = ListView1.SelectedItems(0).Tag
Dim myFile As String = Path.GetFileName(s)
Dim mu As String = myFile.Replace(".exe", "").Trim()
Dim f As Process
Dim p As Process() = Process.GetProcessesByName(mu)
For Each f In p
If p.Length > 0 Then
For i As Integer = 0 To p.Length - 1
ProcessID = (p(i).Id)
AutoMain.Name.Text = f.MainWindowTitle
Timer1.Enabled = False
Me.Close()
Next
Else
ProcessID = 0
End If
If ProcessID = 0 Then
Process.Start(mu)
End If
Next
End Sub