По сути, я делаю менеджера, который будет отображать окно, когда вы нажимаете кнопку или элемент списка.
Это может быть полезно, потому что на рабочих местах ИТ есть программы, открытые с несколькими разными окнами или экземплярами одной запущенной программы, и переключение между задачами может быть проще, если посмотреть на конкретный экземпляр и щелкнуть его, чтобы отобразитьэто, чем прокручивать панель задач, пытаясь найти тот ОДИН документ, который вы ищете.
У меня есть два вопроса:
Как мне показать окно, которое вывыбирается кнопкой после выбора экземпляра в списке
Как мне сделать так, чтобы он закрывал только вкладку / экземпляр программы вместо программы?
Используемый мной скрипт уничтожения:
Private Sub btnKill_Click(sender As Object, e As EventArgs) Handles btnKill.Click
Try
Dim whole As String = Search.SelectedItem.ToString
Dim pid = whole.Substring(whole.LastIndexOf(" # "))
pid = pid.Replace(" # ", "")
Dim p As Process = Process.GetProcessById(pid)
Try
p.Kill()
Catch ex As Exception
' MessageBox.Show(ex.Message)
End Try
Catch ex As Exception
' MessageBox.Show(ex.Message)
End Try
Search.Items.Clear()
For Each p As Process In Process.GetProcesses
If p.MainWindowTitle = String.Empty = False Then
Search.Items.Add(p.ProcessName & " # " & p.MainWindowTitle & " # " & p.Id)
End If
Next
'For every process running
For Each P As Process In Process.GetProcesses
'Get a list of ALL of the open windows associated with the process
Dim windows As IDictionary(Of IntPtr, String) = GetOpenWindowsFromPID(P.Id)
For Each kvp As KeyValuePair(Of IntPtr, String) In windows
If kvp.Value.ToLower = "start" = False Then
lstMain.Items.Add(P.ProcessName & " # " & kvp.Value & " # " & P.Id)
Search.Items.Clear()
End If
Next
Next
Try
Dim whole As String = lstMain.SelectedItem.ToString
Dim pid = whole.Substring(whole.LastIndexOf(" # "))
pid = pid.Replace(" # ", "")
Dim p As Process = Process.GetProcessById(pid)
Try
p.Kill()
Catch ex As Exception
' MessageBox.Show(ex.Message)
End Try
Catch ex As Exception
' MessageBox.Show(ex.Message)
End Try
lstMain.Items.Clear()
For Each p As Process In Process.GetProcesses
If p.MainWindowTitle = String.Empty = False Then
lstMain.Items.Add(p.ProcessName & " # " & p.MainWindowTitle & " # " & p.Id)
End If
Next
'For every process running
For Each P As Process In Process.GetProcesses
'Get a list of ALL of the open windows associated with the process
Dim windows As IDictionary(Of IntPtr, String) = GetOpenWindowsFromPID(P.Id)
For Each kvp As KeyValuePair(Of IntPtr, String) In windows
If kvp.Value.ToLower = "start" = False Then
lstMain.Items.Add(P.ProcessName & " # " & kvp.Value & " # " & P.Id)
End If
Next
Next
End Sub
Даже если у меня, скажем, открыто 3 разных файла слов, если я убью один, он убивает их всех.Я думаю, что это связано с:
Dim pid = whole.Substring(whole.LastIndexOf(" # "))
pid = pid.Replace(" # ", "")
Dim p As Process = Process.GetProcessById(pid)
Помощь будет очень признателен!
СПАСИБО!
-Filip
РЕДАКТИРОВАТЬ: Как могЯ использую команду "BringtoFront" с ним?