VB.Net/Windows System/Process
Содержание
Check Existing Duplicate Process
<source lang="vbnet"> Imports System.Threading Module Module1
Sub Main() Dim MatchingNames As System.Diagnostics.Process() Dim TargetName As String TargetName = System.Diagnostics.Process.GetCurrentProcess.ProcessName MatchingNames = System.Diagnostics.Process.GetProcessesByName(TargetName) If (MatchingNames.Length = 1) Then Console.WriteLine("Started...") Else Console.WriteLine("Process already running") End If End Sub
End Module
</source>
Checking for a Previous Instance
<source lang="vbnet"> Module MainModule
Public Function PrevInstance() As Boolean If UBound(Diagnostics.Process.GetProcessesByName(Diagnostics.Process.GetCurrentProcess.ProcessName)) > 0 Then Return True Else Return False End If End Function
End Module
</source>
Get current Running Process
<source lang="vbnet"> Imports System.Threading Public Class MainClass
Public Shared Sub Main() Dim ProcessList As System.Diagnostics.Process() ProcessList = System.Diagnostics.Process.GetProcesses() Dim Proc As System.Diagnostics.Process For Each Proc In ProcessList Console.WriteLine("Name {0} ID {1}", _ Proc.ProcessName, Proc.Id) Next End Sub
End Class
</source>
Get Previous Instances
<source lang="vbnet"> Imports System.Windows.Forms Public Class Form1
Inherits System.Windows.Forms.Form Public Sub New() MyBase.New() InitializeComponent() End Sub Friend WithEvents Label1 As System.Windows.Forms.Label <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Me.Label1 = New System.Windows.Forms.Label() Me.SuspendLayout() " Me.Label1.Location = New System.Drawing.Point(16, 16) Me.Label1.Size = New System.Drawing.Size(296, 23) Me.Label1.TabIndex = 0 Me.Label1.Text = "Run the final .EXE version of this application." " Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(360, 157) Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.Label1}) Me.ResumeLayout(False) End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If PrevInstance() = True Then Dim Processes() As Process Processes = Diagnostics.Process.GetProcessesByName( Diagnostics.Process.GetCurrentProcess.ProcessName) AppActivate(Processes(0).Id) Application.Exit() End If End Sub Public Function PrevInstance() As Boolean If Diagnostics.Process.GetProcessesByName(Diagnostics.Process.GetCurrentProcess.ProcessName).Length > 1 Then Return True Else Return False End If End Function
End Class
</source>
Start a Process
<source lang="vbnet"> Imports System Imports System.Data Imports System.Windows.Forms Imports System.Drawing Imports System.Diagnostics Imports System.Drawing.Printing Public Class MainClass
Shared Sub Main() Dim new_process As New Process new_process.StartInfo.FileName = Application.ExecutablePath new_process.StartInfo.Verb = "Open" new_process.Start() End Sub
End Class
</source>
Use Process to Start IExplore.exe
<source lang="vbnet"> Imports System.Windows.Forms Public Class MainClass
Public Shared Sub Main() Try System.Diagnostics.Process.Start("IExplore.exe", "www.vbex.ru") Catch MessageBox.Show("Error launching Internet Explorer") End Try End Sub
End Class
</source>